用于加载保留和存储条件序列的解码时间指令优化的制作方法

文档序号:7792250阅读:269来源:国知局
用于加载保留和存储条件序列的解码时间指令优化的制作方法
【专利摘要】提供了一种用于更换原子序列的技术。处理电路接收该原子序列。该处理电路检测原子序列。该处理电路产生内容原子操作以更换原子序列。
【专利说明】用于加载保留和存储条件序列的解码时间指令优化

【技术领域】
[0001]本发明总体上涉及解码时间指令优化,并且更具体地涉及用于加载保留(loadreserve)和存储条件序列(condit1nal sequence)的优化。

【背景技术】
[0002]在Power ISA⑩中,通过负载字(Load Word)和保留索引化(Reserve Indexed)(Iwarx)来实现加载保留功能,并且通过存储双字条件索引化(stwcx)来实现存储条件功能。stwcx和Iwarx指令是用于执行对存储器的读取-修改-写入操作的原语(primitive)或简单指令。如果响应于存储条件而执行存储,则stwcx和Iwarx指令的使用保证了没有其他的处理器或机构已经在执行Iwarx指令的时间和stwcx指令完成的时间之间修改了目标存储器位置。
[0003]可以在来自IBM#于2010年7月23日公布的“Power ISA?Vers1n
2.06Revis1n B (Power ISA?版本2.06修订版B) ”中找到另外的信息。在Power ISA?
的一些实现方式中,可选地对于其他数据宽度提供了另外的加载保留和存储条件指令。
[0004]可以在来自IBM 的“64-bit PowerPC ELF Applicat1n Binary InterfaceSupplement 1.9”(2004)中找到另外的信息。
[0005]而且,可以在“PowerArchitecture? 32-bit Applicat1n Binary InterfaceSupplement 1.0 Linux? ” (2011 年 4 月 19 日)and “Power Architecture? 32-bitApplicat1n Binary Interface Supplement 1.0_Embedded”(2011 年 4 月 19 日)中找到信息。IBM、AIX、PowerPC、Power ISA、z/Architecture 和 Power Architecture 是在世界上许多行政辖区中注册的国际商业机器公司的商标。
[0006]Linux是Linus Torvalds在美国、其他国家或两者中的注册商标。
[0007]—些架构使用基于加载保留和存储条件的序列以在多个处理器之间同步。这样的架构的一个示例是Power Architecture--
[0008]对于下述部分的示例代码
[0009]atomic Increment;
[0010]
retry:1warx r4, 0, r3 // Read integer from RAM into r4, placing reservat1n,
addi r4, r4, I // Add I to r4.stwcx,, r4,0? r3 // Atiempl to store incremented value back to RAM.bne- retry // Iftiie store failed (unlikely), retry,
atomic decrement;
retry:1warx r4, 0, r3 // Read integer from RAM into r4,placing reservat1n.addi r4, r4, -1 // Subtract I from r4,
stwcx.r4,0? r3 // Attempt to store incremented value back to RAM.bne- retry // If the store failed (unlikely), retry,
atomic increment;
retry:1warx r4, O? r3 // Read inieger lrom RAM into r4, placing reservai1n,
add r4, r4,r8 // Add r8 to r4.stwcx.r4,0, r3 // Attempt to store incremented value back to RAM,
bne- retry // if ihc store failed (unlikely), rctiy.atomic decrement;
retry:1warx r4, 0, r3 // Read inieger from RAM into r4, placing
reservat1n.sub r4, r4, r8 // Subtract r8 from i*4.stwcx, 1*4,0, r3 // Attempt to store incremented value back to RAM,
bne- relry // Iflhe store failed (unlikely), retry.atomic evchange;
retry:1warx r4, 0, r3 // Read integer from RAM into r4, placing

[0011]
reservat1n.stwcx.r5, 0, r3 // Attempt to store r5 value back to RAM.bne- retry // If the store failed (unlikely), retry.
[0012]这个代码可能受到下述多个缺点的影响:
[0013]I)可能需要到相干点(coherent point)的“往返行程(roundtrip) ”,即,分别对于stwcx和Iwarx指令花费多个周期,以首先加载并且有条件地更新在相干点处的值。作为比较,其中要执行的操作被发送到存储器巢(nest)的存储器巢原子(atomic)操作可能仅需要一个往返行程——以发送具有任何参数的请求,并且接收结果。
[0014]2)当存储器位置被严重竞争时,需要另外的复杂逻辑来防止活锁(Iivelock)和饥饿(starvat1n),其中,没有竞争核心(competing core)能够成功地完成该同步代码。
[0015]优选的是,当可以在高性能存储器子系统中实现原子操作时,提供这些原子操作,诸如交换、原子递增(atomic increment)等。不幸的是,对于传统处理器,这样的新的设施需要多年来变得被软件开发接受,因为它们的使用将使得代码在更老的系统上不可执行。
[0016]因此,在本领域中需要处理上述问题。


【发明内容】

[0017]实施例包括用于更换原子序列的方法、系统和计算机程序产品。处理电路接收原子序列。处理电路检测原子序列。处理电路产生内部原子操作以更换原子序列。
[0018]通过本发明的技术来实现另外的特征和优点。本发明的其他实施例和方面在此被详细说明,并且被看作所要求保护的发明的一部分。为了更好的理解具有优点和特征的本发明内,参见说明书和附图。
[0019]从第一方面看,本发明提供了一种用于更换原子序列的计算机实现的方法,所述方法包括:处理电路接收所述原子序列;所述处理电路检测所述原子序列;并且,所述处理电路产生内部原子操作以更换所述原子序列。
[0020]从另一个方面看,本发明提供了一种用于更换原子序列的计算机系统,所述系统包括:处理电路、可操作地连接所述检测电路的存储器;用于通过所述处理电路接收所述原子序列的接收部件;用于通过所述处理电路来检测所述原子序列的检测部件;以及,产生部件,用于通过所述处理电路来产生内部原子操作以更换所述原子序列。
[0021]从另一个方面看,本发明提供了一种计算机程序产品,用于更换原子序列,所述计算机程序产品包括计算机可读存储介质,其能够被处理电路读取,并且存储指令,所述指令由所述处理电路执行来用于执行一种用于执行本发明的步骤的方法。
[0022]从另一个方面看,本发明提供了一种计算机程序,所述计算机程序被存储在计算机可读介质上,并且能够被加载到数字计算机的内部存储器内,所述计算机程序包括软件代码部分,所述软件代码部分当所述程序在计算机上运行时用于执行本发明的步骤。
[0023]从另一个方面看,本发明提供了一种计算机程序产品,用于更换原子序列,所述计算机程序产品包括:有形存储介质,其能够被处理电路读取,并且存储由所述处理电路执行来用于执行一种方法的指令,所述方法包括:所述处理电路接收所述原子序列;所述处理电路检测所述原子序列;并且,所述处理电路产生内部原子操作以更换所述原子序列。
[0024]从另一个方面看,本发明提供了一种用于更换原子序列的计算机系统,所述系统包括:处理电路和可操作地连接到所述处理电路的存储器,所述系统被配置为执行一种方法,所述方法包括:所述处理电路接收所述原子序列;所述处理电路检测所述原子序列;并且,所述处理电路产生内部原子操作以更换所述原子序列。

【专利附图】

【附图说明】
[0025]现在参考在下面的附图中图示的优选实施例仅通过示例来描述本发明:
[0026]图1A和IB是根据现有技术的一般示出的处理器核心的框图,在该处理器核心中,可以实现本发明的优选实施例;
[0027]图2是图示根据本发明的优选实施例的、接收指令、检测在指令中的原子序列并且产生内部原子操作以更换所检测的原子序列的框图;
[0028]图3是图示根据本发明的优选实施例的示例的检测的原子序列的表格;
[0029]图4是图示根据本发明的优选实施例的示例的检测的原子序列的表格;
[0030]图5是图示根据本发明的优选实施例的、用于检测原子序列并且产生内部原子操作以更换所检测的原子序列的伪代码的框图;
[0031]图6是示出根据本发明的优选实施例的、被转译为对应的内部原子操作的原子序列的框图;
[0032]图7是也示出根据本发明的优选实施例的、被转译为对应的内部原子操作的原子序列的框图。
[0033]图8是根据本发明的优选实施例的、用于检测原子序列、产生内部原子操作以更换原子序列并且执行内部原子操作的方法的流程图;
[0034]图9是根据本发明的优选实施例的、用于检测原子序列、产生内部原子操作以更换原子序列并且执行内部原子操作的另一种方法的流程图;
[0035]图10是根据本发明的优选实施例的、可操作地连接到存储器子系统的处理器的框图;
[0036]图11是根据本发明的优选实施例的、可操作地连接到存储器子系统的处理器的框图;
[0037]图12是根据本发明的优选实施例的、用于将原子序列更换为所产生的内部原子操作的方法的流程图;
[0038]图13图示了根据现有技术的具有能力的计算机的示例,在该计算机中,可以实现本发明的优选实施例;并且
[0039]图14图示了根据现有技术的计算机程序产品,在该计算机程序产品中,可以实现本发明的优选实施例。

【具体实施方式】
[0040]示例性实施例提供了在处理电路/核心中的解码时间指令优化(DT1),用于将原子序列替换为(单个)内部原子操作。该技术检测在原子序列中的加载保留和存储条件指令,并生成内部原子操作来更换该原子序列。
[0041]在2011年 10月 3 日提交的题目为“Linking Code For An Enhanced Applicat1nBinary Interface (ABI) With Decode Time Instruct1n Optimizat1n (用于具有角军石马时间指令优化的增强应用二进制接口(ABI)的链接代码)”的美国专利申请N0.13/251,793中描述了解码时间指令优化。美国专利申请N0.13/251,793描述了本发明的一个实施例涉及最小化内容的表格(TOC)溢出对于在计算系统中的性能和吞吐量的影响。一个实施例包括编译器,该编译器被定制来产生对象代码以包括指定的指令序列(例如,已经被插入到代码内以便补偿TOC溢出的序列)。指令序列被适配来被硬件识别,使得微处理器可以优化该序列以用于内部执行。在定位了指定的指令序列之一时,微处理器或者将在序列中的指令更换为更高效地执行的内部指令,或者将在序列中的指令更换为单个内部指令。被微处理器执行的该进程在此被称为解码时间指令优化(DT1)。DT1进程是硬件进程。在此描述的编译器和链接器通过硬件来准备代码序列用于优化。这些代码序列被编译器和/或链接器以要被DT1使能硬件检测的方式来编码,诸如:彼此相邻的特定指令,其当限制移位(displacement)范围时具有适当的移位范围,当处理器对破坏(destructive)代码形式有要求以使能DT1时具有诸如破坏的适当属性,并且当处理器对指令对齐有要求以使能DT1时被适当地对齐,以及DT1使能硬件可能要求的任何其他这样的属性。在2011年10月 3 日提交的题目为 “Scalable Decode-time Instruct1n Sequence Optimizat1n ofDependent Instruct1ns (相关指令的可升级解码时间指令序列优化)”的美国专利申请N0.13/251,409中进一步描述了 DT1使能的硬件。
[0042]在使用解码时间指令优化的现有技术的处理器中,现有技术的处理器需要每次获取指令时重复优化。这是在能量、复杂度和可能的延迟上的开销,并且也限制了可以进行以避免增加的延迟的优化。
[0043]示例性实施例提供了可以在处理器的解码阶段(和/或预解码阶段)中对于加载保留和存储条件指令所增加的优化能力,该加载保留和存储条件指令用于构造看起来对于对齐的存储位置执行原子更新操作的指令的序列。图1A和IB图示了根据一个实施例的具有用于解码时间指令建立的逻辑(例如,被配置为实现逻辑的硬件电路)的处理器核心(电路)100。注意,提供处理器的一般说明来示出如何可以实现解码时间指令优化的示例。处理器核心100除了别的之外包括预测硬件、寄存器、高速缓存、解码器、指令排序单元(ISU) 150和指令执行单元。具体地说,该预测硬件包括本地分支历史表格(BHT) 110a、全局分支历史表格(BHT) IlOb和全局选择器110c。通过具有用于下一个指令获取的地址的指令获取地址寄存器(IFAR) 120来访问该预测硬件。在一个实施例中,指令高速缓存125获取被称为“获取组”的多个指令。
[0044]使用相同的地址在大体相同的时间来访问该高速缓存和预测硬件。如果预测硬件具有可用于在获取组中的指令的预测信息,则那个预测被转发到ISU 150,该ISU 150继而向用于执行的单元发出指令。该预测可以用于与分支目标计算和分支目标预测硬件(诸如链接寄存器预测堆栈(stack)和计数寄存器高速缓存)相结合地更新IFAR 120。如果不可获得预测信息,但是指令解码器找到在获取组中的分支指令,则对于那个获取组建立预测,且将其存储在预测硬件中并且被转发到ISU 150。
[0045]分支执行单元(BRU) 140响应于被ISU 150向其发出的指令来运行。BRU 140读取访问该条件寄存器文件160。分支执行单元140进一步访问在分支信息队列142中的由分支扫描逻辑存储的信息以确定分支预测的成功,并且可操作地耦合到与由微处理器支持的一个或多个线程对应的指令获取地址寄存器(IFAR) 120。当BRU 140发现分支误预测时,BRU 140进一步可操作地耦合以引起预测器更新。
[0046]当执行指令时,BRU 140检测该预测是否错误。如果如此,则需要更新该预测。为了这个目的,在图1A中的处理器也包括预测器更新逻辑130a。预测器更新逻辑130a响应于来自分支执行单元140的更新指示,并且被配置以更新在本地BHT 110a、全局BHT IlOb和全局选择器IlOc的一个或多个中的阵列条目。预测器硬件110a、I1b和IlOc可以具有与由指令获取和预测操作使用的读取端口不同的写入端口,或者,可以共享单个读取/写入端口。预测器更新逻辑130a可以进一步可操作地稱合到链栈(link stack) 115a和计数器寄存器堆栈115B。
[0047]现在参见条件寄存器文件(CRF) 160,CRF 160可被BRU 140读取访问,并且可以由包括但是不限于定点单元(FXU) 165a、浮点单元(FPU) 175和向量多媒体扩展单元(VMXU) 180的执行单元写入。条件寄存器逻辑执行单元(CRL执行)155 (也被称为CRU)和SPR处理逻辑读取和写入访问条件寄存器文件(CRF) 160(为了简化说明,从未示出的SPR处理逻辑访问CRF 160)。CRF 155对于在CRF文件160中存储的条件寄存器执行逻辑操作。FXU 165a能够执行向CRF 160的写入更新。
[0048]处理器核心100包括根据一个实施例的指令解码器10。在解码时间,在位于指令高速缓存单元125后的指令解码器10中执行优化。指令解码器10可以检测原子序列(具有多个指令),并且将所检测的原子序列改变(转译)为单个内部原子操作。在一个实施例中,一个或多个原子功能单元(Atomic Funct1n Unit, AFU) 20可以执行由指令解码器10提供/确定的优化(即,单个内部原子操作)。在另一个实施例中,在图10和11中所示的巢原子单元(Nest Atomic Unit, NAU) 1010可以执行单个内部原子操作。补充(和/或替代)检测原子指令序列和产生新的单个内部原子操作的指令解码器10,预解码优化器5可以包括用于预解码时间指令优化的预解码逻辑。预解码优化器5被配置为在由指令高速缓存125例如检测原子指令序列,并且在高速缓存重加载期间的高速缓存之前产生新的单个内部原子操作。因此,可以通过AFU20和/或NAU 1010来执行(被预解码优化器5)检测和确定的单个内部原子操作。注意,用于检测原子指令序列并且产生新的单个内部原子操作以更换原子指令序列的指令解码器10的功能的任何讨论类似地适用于预解码优化器5。另外,LSU 170 (加载存储单元)可以被配置具有AFU 20的功能(而不要求独立的AFU引擎),并且LSU 170可以执行单个内部原子操作。而且,可以增加循环缓冲区15来捕获已经被指令解码器10产生的解码的单个内部原子操作的每一个。内部原子操作可以从解码器10输出作为(内部原子操作)1p 0a、1p lb、1p 2c和/或1p 3d,如图2中所示。
[0049]可以以任何方式来组合和实现在此所述的实施例,并且,描述示例情况和实现方式的本公开不意味着被限制。
[0050]事实上,实施例提供了一种机构(例如,解码器10和/或预解码优化器5),用于识别一起实现原子操作的指令的序列,并且内部地将那些指令序列转译为表示作为内部原子操作的原子操作的内部操作。因此,今天,在用于实现诸如加载保留和存储条件的RISC原语的Power ISA?上,通过使用加载保留来获取数据项目来原子地更新在存储器中的值,并且,如果对于所保留的数据项目未记录干扰,则出现(经由存储条件的)更新。从IBM?在2010年7月23日公布的“Power ISA?版本2.06修订版B”教导了示例的精简指令集计算机(RISC)指令集架构(ISA)。在此使用Power ISA?,以便演示示例实施例。然而,本公开不限于Power ISA?或RISC架构。本领域内的技术人员容易明白在此公开的技术在多种架构中的使用。来自IBM? 的“z/Architecture Principles of Operat1n(z/架构操作原理)” SA22-7832-08第九版本(2010年8月)教导了示例的CISC (复杂指令集计算机)指令集架构。
[0051]因为使用多个指令/指令序列来执行原子操作,并且在公共的微架构中,可以仅对于最多一个指令保存数据;原子指令序列不能保存数据项目以避免来自在计算机系统中的其他访问的干扰,导致了低效实现。而且,由于指令的序列,所以多次引发对于相干点的延迟,这与内部原子操作相反,其中。对于整个内部原子操作仅执行一次该传送。
[0052]现在转向图2,框图200图示了根据一个实施例的指令解码器10的进一步的细节。指令解码器10可以包括解码器A、B、C和D以及优化分析引擎205a、205b和205c连同原子优化分析引擎220。在一种实现方式中,可以在优化分析引擎205a、205b和205c中包括原子优化分析引擎220的功能,并且,可以省略原子优化分析引擎220 (如果期望的话)。如此一来,对原子优化分析引擎220的任何讨论适用于优化分析引擎205a、205b和205c。
[0053]在指令解码器10中,优化分析弓I擎(OAE) 205a可操作地连接到解码器A和B,并且优化分析引擎205b可操作地连接到解码器B和C,并且优化分析引擎205c可操作地连接到解码器C和D。
[0054]解码器A从指令高速缓存125接收指令0,解码器B从指令高速缓存125接收指令1,解码器C从指令高速缓存125接收指令2,并且解码器D从指令高速缓存125接收指令3。指令解码逻辑210a-210d分别对于刚刚接收的相应指令O、1、2和3执行初始解码。
[0055]指令解码逻辑210a向原子优化分析引擎220、向OAE 205a、向复用器“a” (MUX)(例如,以当未进行优化时被选择)和向优化逻辑215a和215b提供其解码指令(表示指令0)连同操作数资源属性、操作数说明符、解码的指令类型和解码的指令属性。
[0056]指令解码逻辑210b向原子优化分析引擎220、向复用器(MUX) “b”(例如,以当未进行优化时被选择)、向OAE 205a、向OAE 205b、向优化逻辑215b、向优化逻辑215b和向优化逻辑215c提供其解码指令(表示指令I)连同操作数资源属性、操作数说明符、解码的指令类型和解码的指令属性。
[0057]指令解码逻辑210c向原子优化分析引擎220、向复用器(MUX) “c”(例如,以当未进行优化时被选择)、向OAE 205a、向OAE 205c、向优化逻辑215b、向优化逻辑215c和向优化逻辑215d提供其解码指令(表示指令2)连同操作数资源属性、操作数说明符、解码的指令类型和解码的指令属性。
[0058]指令解码逻辑210d向原子优化分析引擎220、向复用器(MUX) “d”(例如,以当未进行优化时被选择)、向OAE 205c、向优化逻辑215c和向优化逻辑215d提供其解码指令(表示指令3)连同操作数资源属性、操作数说明符、解码的指令类型和解码的指令属性。
[0059]OAE 205a、OAE 205b和OAE 205c被配置为将分别从示例解码器A、B、C和D接收的解码指令(包括解码特性)作比较以确定它们是否对应于作为优化的候选者的各种原子指令序列之一(其具有加载保留和存储条件序列)。另外,原子优化分析引擎220被配置为将分别从示例解码器A、B、C和D接收的解码指令(包括解码特性)作比较以确定它们是否对应于作为优化的候选者的各种原子指令序列之一(其具有加载保留和存储条件序列)。
[0060]对于任何原子指令序列(其具有加载保留和存储条件序列),0AE205a-205c和/或原子优化分析引擎220被配置来产生用于每一个特定解码指令(对应于每一个相应的指令0、1、2和3)的单个内部原子操作。原子优化分析引擎220从四个连续的解码器A、B、C和D拉出输入。
[0061]当至少一个OAE 205a_205c检测到具有加载保留和存储条件的原子序列时,来自OAE 205a的输出(即,由OAE 205a产生的相应的单个内部原子操作)被发送到优化逻辑215a和215b和复用器a和b(作为操纵逻辑),来自OAE 205b的输出(B卩,由OAE 205b产生的相应的单个内部原子操作)被发送到优化逻辑215b和215c和复用器b和c (作为操纵逻辑),并且来自0AE205C的输出(S卩,由OAE 205c产生的相应的单个内部原子操作)被发送到优化逻辑215c和215d和复用器c和d(作为操纵逻辑)。
[0062]而且,当原子优化分析引擎220检测到具有加载保留和存储条件的原子序列时,来自原子优化分析引擎220的输出(S卩,由原子优化分析引擎220产生的相应的单个内部原子操作)被发送到优化逻辑215a、215b、215c和215d和复用器a、b、c和d (作为操纵逻辑)。
[0063]而且,OAE 205a-205c和/或原子优化分析引擎220向相应的复用器a、b、c和d提供操纵逻辑,以选择由初始解码操作产生的未优化的1p或与在已经被优化逻辑在OAE/原子优化分析引擎控制信号的控制下产生的优化DT1序列中的1p对应的1p之一。因此,相应的复用器a、b、c和d将选择当存在时的单个内部原子操作以分别向指令获取地址寄存器120输出1p Oa.1op lb.1op 2c和/或1p 3d。由原子优化分析引擎220产生的任何内部原子操作(1p)可以被复用器a、b、c和d选择为相应的输出1p 0a、1p lb、1p2c和/或1p 3d以取代与在指令0、1、2和3中分别检测到的原子序列对应的指令。
[0064]而且,在至少一个实施例中,OAE 205a、205b和205c进行通信以防止相互排他(exclusive)的行为。另外,在解码器B中的指令可以与在解码器A中的指令相结合地被组合为优化序列,以形成与原始指令O和I对应的DTI优化的序列,或者可以与在解码器C中的指令相结合地被组合为另一优化序列,以形成与原始指令I和2对应的DTI优化的序列,但是不能同时被DTI优化为与在解码器A和C中的指令相结合地出现的优化的一部分。作为简单示例,序列“addi r2, r2, I ;addi r2, r2, I ;addi r2, r2, I”可以通过组合指令0和I 被 DTI 优化(DT1-optimized)为 “addi r2, r2, 2 ;addi r2, r2, I ”,或者可以通过组合指令I和2被DTI优化为“addi r2, r2, I ;addi r2, r2, 2”,但是串联式(in tandem)执行的两个优化将获得不正确的序列;而且,该序列可以通过组合指令O和I被DTI优化为“addir2, r2, 2 ;addi r2, r2, 2”。
[0065]图3和4示出作为可以被预解码优化器5和/或指令解码器10 (例如,经由OAE205和/或原子优化分析引擎220)检测到的、具有加载保留和存储条件的示例性被检测原子序列的表格300和400。这些被检测的原子序列是来自Power ISA?代码的示例,其包括原子递增、原子递减、原子加法、原子减法和原子交换(exchange)的示例,并且,每一个原子序列被预解码优化器5和/或指令解码器10转译为内部原子操作。存在被所产生的内部原子操作(op)检测和更换的多个原子序列,并且示例性实施例不意味着被限制。例如,原子比较和互换(swap)序列可以是被内部原子操作检测和更换的原子序列。原子比较和交互(CAS)是在多线程中使用来实现同步的原子CPU指令,并且,原子比较和互换序列将存储器位置的内容与给定值作比较,并且只有在它们相同的情况下,才将那个存储器位置的内容修改为给定的新值。原子性(atomicity)保证了基于最新信息来计算该新值;如果该值已经同时被另一个线程更新,则写入将失败。操作的结果必须指示它是否执行了该替代。
[0066]图5图不了根据一个实施例的表格500,其具有用于OAE 205a_205c、原子优化分析引擎220和/或预解码优化器5的示例伪代码。该伪代码可以用于检测和更换示例的(模式)原子序列505,并且类似的伪代码可以用于检测和更换在图3和4中的原子序列。伪代码的块510被设计来检测具有加载保留指令Iwarx并且具有存储条件指令stwcx的原子序列505。一旦伪代码检测/识别了原子序列505,则伪代码的块515被设计来将原子序列改变/更换为单个原子序列(即,没有加载保留和存储条件序列的一个指令)。具体地说,块510测试来自解码器A至D的解码输出(与分别有前缀decode0_至decode3_的信号名称相关联),以保证在4元素解码序列中的每一个位置对应于在序列505中的相应指令。块515分配操纵变量(steering variable)以指示已经检测到原子操作(decoderO_atomic),并且使得MUX a(例如,在解码器A中)选择所产生的内部原子操作以传送到处理器核心(例如,处理器核心100)的其余部分。在一个示例性实施例中,内部操作代码“atomic_add”被分配为op,该op要被解码器A输出,并且被分配到decoder0_op并且对应于执行原子立即操作(immediate operat1n)的原子内部操作。要被内部原子操作使用的立即值被从与解码器B对应的信号decodel_immediate提取,并且被分配到要被解码器A与被产生的内部原子操作相结合地使用的信号decoderO_immediate。另外,decoderO_suppress被设置为FALSE (假)以指不存在操作,并且 decoder l_suppress 和 decoder2_suppress 和 decoder3_suppress被设置为TRUE(真),以指示不存在操作,并且解码器B、C和D将不发射内部操作。在表格500中的伪代码被设计来检测原子序列505,并且可以明白,另外的伪代码将检测到其他原子序列。
[0067]例如,图6和7分别是框图600和700,其图示了已经分别被0AE205a_205c、原子优化分析引擎220和/或预解码优化器5检测和改变为单个内部原子操作的示例原子序列。为了精确,可以针对原子优化分析引擎220讨论各种操作和功能,但是这些也适用于OAE 205a-205c和预解码优化器5。
[0068]在图6中,原子优化分析引擎220被配置为检测原子序列605,并且将整个原子序列605转译(并且更换)为作为在这个示例中的Atomic_add r4、0、r3、l的单个内部原子操作615 (它是单个命令/指令)。内部原子操作615是原子加上I (atomic add of I)。在一种实现方式中,原子优化分析引擎220被配置为将原子序列605转译为作为Atomic_increment r4、0、r3的内部原子操作620。内部原子操作620是预定义量(诸如I)的增量。
[0069]类似地,原子优化分析引擎220被配置为检测原子序列610,并且将整个原子序列610转译(和更换)为作为Atomic_add r4、0、r3、n的单个内部原子操作625。内部原子操作625加上量η (其表示预定义的数)。
[0070]在图6中,原子序列605和610都经由重试指令而具有循环(looping),其将继续循环直到被成功地完成。在产生内部原子操作615、620和625时,原子优化分析引擎220被配置使得内部原子操作615、620和625分别包含原子序列605和610的循环(即,重试)。然而,在内部原子操作615、620和625中不包括循环,因为原子优化分析引擎220包含内部原子操作615、620和625总是完成(而不要求循环)。
[0071]原子命令(作为在此所述的单个内部原子操作而产生)是用于安全地更新在并行区域内的特定存储器位置的指示(directive)。当使用该原子指示时,这保证一次仅一个线程写入到该存储器位置,避免了可能从向同一存储器位置的同时写入而引起的错误。
[0072]根据原子序列605的实现方式,Iwarx指令将32比特整数从存储器(例如,在图10和11中的存储器1030)读取到寄存器r4内,布置(placing)保留。当对于设置了保留的存储器位置出现另一个访问时“丢失”保留。addi指令将值I加到从存储器返回并且存储在寄存器r4中的值。如果并且只有还没有丢失通过Iwarx设置的保留,存储条件指令才将更新的值从r4存储回到通过Iwarx设置了保留的存储器位置。如果成功地执行了该存储,则还没有丢失保留,指示了自从布置了保留起还没有执行更新,并且存储指令更新条件寄存器crO以指示EQUAL(相等)的值。如果未成功地执行该存储,则已经丢失了保留,指示自从布置了保留起已经执行了更新,并且因此原子更新是不可能的,并且存储指令更新条件寄存器crO以指示NOT EQUAL (不等)的值。bne指令查看条件寄存器crO的值,并且如果状态指示NOT EQUAL,则分支到由示例性标签“重试”指示的序列的开始,以重新尝试序列的执行。
[0073]根据“&如11^(^(1(1”615的执行的示例性特征,与诸如MES1、MOESI或本领域中已知的其他协议的处理器相干协议相结合地实现原子加法,执行单元获得在用于排他访问的指定地址(例如,具有O移位的寄存器r3)处的数据项目。相干协议被更新以当还没有结合原子操作获得相干协议时不响应于对于数据项目的相干请求,直到已经完成了原子操作的执行。访问与数据项目相关联的数据值。递增该数据值。将更新的值存储回已经获得了排他访问的数据项目。该指令根据指令完成和相干规则而完成(用于该示例实现方式)。仅当该指令完成时,才从排他访问状态释放该地址。
[0074]本领域内的技术人员还将明白,如果与诸如寄存器r4或条件寄存器crO的原始原子序列对应的值可以被其他指令读取,则必须例如通过下述方式来执行向这些寄存器写入更新以反映原始指令序列的语义:在寄存器r4中存储原子地递增的值,并且通过将条件寄存器crO设置为指示“EQUAL”的条件来指示成功更新。
[0075]在图7 (作为一种实现方式)中,原子优化分析引擎220不产生用于单个内部原子操作715和720的循环,但是原子优化分析引擎220被配置为如果内部原子操作失败则分别重复内部原子操作715和720。所产生的内部原子操作(715和/或720)可能失败,并且指示重复,因为该分支不能被(产生内部原子操作的原子优化分析引擎220)包含(subsumed)并且/或者因为设计者(出于偏好)更偏好建立不失败的内部原子操作。
[0076]根据“atomic_add” 715的执行的示例性特征,与诸如MES1、MOESI或在本领域中已知的其他协议的处理器相干协议相结合地实现原子加法,执行单元获得在用于排他访问的指定地址(例如,具有O移位的寄存器r3)处的数据项目。相干协议被更新以当结合原子操作获得相干协议时不响应于对于数据项目的相干请求,直到已经完成了原子操作的执行。访问与该数据项目相关联的数据值。递增该数据值。如果可能则将更新的值存储回已经获得排他访问的数据项目。根据一种实现方式,该指令根据指令完成和相干规则(而完成。通过将条件寄存器crO设置为“EQUAL(相等)”来指示成功,并且当指令完成时,才从排他访问状态释放地址。在原子加法715的执行的至少一个方面中,不执行原子更新,例如,因为一种实现方式可以给较高优先级请求者(诸如,但是不限于I/O请求或较高优先级处理,或者为了容易实现)所获得的数据项目。通过将条件寄存器crO设置为“NOT EQUAL(不等)”来指示atomic_add更新的失败,并且指令完成,并且从排他访问状态释放地址。条件分支测试该操作的成功,并且在失败的情况下重启原子操作的执行。
[0077]在图7中,原子优化分析引擎220被配置为检测原子序列705并且将整个原子序列705转译(并且更换)为作为Retry:Atomic_add.r4, 0,r3, I bne-retry的单个内部原子操作715(它是单个命令/指令)。内部原子操作715是I的原子加法,其如果未成功则重试。原子优化分析引擎220被配置为检测原子序列710,并且将整个原子序列710转译(并且更换)为作为Retry: Atomic_add.r4, O, r3, n bne-retry的单个内部原子操作720 (它是单个命令/指令)。内部原子操作720是η量的原子加法,其如果未成功则重试。
[0078]图8是根据一个实施例的下述方法的流程图800,该方法识别原子序列(具有加载保留(S卩,lwarx)命令和存储条件(即,stwcx)命令),并且产生单个内部原子操作以更换原子序列。
[0079]原子优化分析引擎220被配置为在块805处识别/检测需要被内部原子操作更换的原子序列(它是来自指令高速缓存125的指令)。原子优化分析引擎220被配置为在块810处产生原子内部操作以更换所检测的原子序列。ISU150(响应于从指令解码器10接收到所产生的原子内部操作)被配置为在块815处向AFU 20发出单个原子内部操作(取代原子序列)。AFU 20被配置为在块820处执行单个原子内部操作(取代原子序列)。
[0080]图9是根据一个实施例的下述方法的流程图900,该方法识别原子序列(具有加载保留(S卩,lwarx)命令和存储条件(即,stwcx)命令),并且产生单个内部原子操作以更换原子序列。在图9中,巢原子单元1010(在图10中)用于取代AFU 20而执行单个内部原子操作。
[0081]原子优化分析引擎220被配置为在块805处识别/检测需要被内部原子操作更换的原子序列(它是来自指令高速缓存125的指令)。原子优化分析引擎220被配置为在块810处产生原子内部操作以更换所检测的原子序列。ISU150(响应于从指令解码器10接收到所产生的原子内部操作)被配置为在块815处向AFU 20发出单个原子内部操作(取代原子序列)。AFU 20被配置为在块905处向巢原子单元(NAU) 1010发出原子内部操作。NAU1010被配置为在块915处执行单个原子内部操作(取代原子序列),并且在块915处将结果(例如,计算的结果)返回到处理器核心100。
[0082]图10是示出根据一个实施例的、可操作地连接到在存储器1030中的存储器子系统1020的处理器1005的两个处理器核心100 (左和右)的框图1000。作为示例,处理器核心100的每一个包括其本身(相同)的AFU 20。存储器子系统1020是具有两个(相同)的巢原子单元1010的巢。如上在图9中所述,一个AFU 20向一个NAU 1010发送单个原子内部操作,并且另一个AFU20向另一个NAU 1010发送其单个原子内部操作。存储器子系统1020经由NAU 1010可以执行内部原子操作的更新,因为NAU 1010被配置为执行简单操作。如此一来,每一个NAU 1010执行相应的单个原子内部操作,并且将结果返回到其各自的处理器核心100。
[0083]处理器1005也示出寄存器1015,其是寄存器rl至rn(其中,η是最后一个寄存器)。本领域内的技术人员可以明白,除了在AFU 20和NAU 1010之间的通信之外,在处理器核心100和存储器子系统1020之间传送加载和存储指令。
[0084]图11是框图1100,其包含所有的元件并且与图10的框图1000相同地操作,除了存储器子系统1020(仅)包括单个NAU 1010以外。在该情况下,在两个处理器核心100中的AFU 20向NAU 1010发送其各自的单个内部原子操作。NAU 1010被配置为独立地执行每一个内部原子操作,并且向每一个相应的处理器核心100发回结果。
[0085]在一个实施例中,单个内部原子操作的原子建立总是出现。
[0086]在另一个实施例中,例如,当原子序列的所有指令不在一个组中并且因此(该指令)独立地执行时,DT1不能出现。在该情况下,在至少一个实施例中,指令解码器10需要拒绝诸如Iwarx和/或stwcx的复杂操作的一个或多个,以强制“破解(cracking) ”或微码(microcode)执行。而且,解码器10可以执行未在同一组中的独立指令(Iwarx和stwcx)的指令高速缓存标记,以将加载保留和存储条件强制到同一组内(即,到同一原子序列内,使得该原子序列可以被更换,如在此所述)。可以初始或者在第一次被检测后标记加载保留和存储条件(指令)。如果独立的加载保留和存储条件指令的组形成未重复地成功,则解码器10可以解除指令高速缓存(Icache 125)中的加载保留和存储条件(指令)的标记;然后,解码器10可以标记独立的加载保留和存储条件指令以强制微码/破解,而不要求拒绝。在至少一个实施例中,当DT1未出现以将原子序列转译为用于任何给定的原子序列的原子操作时,根据现有技术的执行原子序列来执行该原子序列。
[0087]图12是根据一个实施例的、用于检测原子序列和将原子序列更换为(在运行时间和/或预解码时间处)所产生的内部操作的方法1200的流程图。
[0088]处理器核心100(它是本领域内的技术人员可以明白的处理电路)在块1205处经由指令解码器10被配置(这也适用于在此讨论的预解码优化器5)以接收原子序列(其可以在来自指令高速缓存125的指令0、1、2和/或3之一中)。处理器核心100在块1210处经由解码器10被配置以检测原子序列(例如,经由OAE 205a-205c和/或原子优化分析引擎220之一 )ο
[0089]虽然已经为了说明的目的而说明了四个指令(例如,指令0、1、2和3)和4个解码器(例如,解码器A、B、C和D),但是示例性实施例不意味着被如此限制。可以考虑,可以有
5、6、7或任何期望数量的解码器,并且由原子内部操作更换的原子序列可以由要被特定内部原子操作更换的2、3、4、5、6或任何期望数量的指令构成。
[0090]经由解码器10配置处理器核心100,以在块1215处(根据在所检测的原子序列中的计算/运算)产生内部原子操作以更换原子序列。
[0091]而且,在处理器核心100中的AFU 20和/或在(巢)存储器子系统1020中的NAU1010被配置以取代原子序列来执行内部原子操作。该原子序列包括加载保留指令和存储条件指令。处理器核心100的解码器10被配置为识别加载保留指令和存储条件指令,以检测需要更换的原子序列。
[0092]内部原子操作是单个指令,而原子序列是包括加载保留指令和存储条件指令的多个指令。基于原子序列的独立指令不是同一组和基于独立指令(例如,加载保留指令和存储条件指令)被定位得独立执行,指令解码器10被配置为执行未在同一组中的独立指令的指令高速缓存标记,以将加载保留指令和存储条件指令强制到同一组内。如此一来,指令解码器10被配置为基于在独立指令中首先检测到加载保留指令来初始地标记加载保留指令,或者基于在独立指令中首先检测到存储条件指令来初始地标记存储条件指令。而且,指令解码器10被配置为通过基于在独立指令中最后检测到加载保留指令而标记加载保留指令或通过基于在独立指令中最后检测到存储条件指令而标记存储条件指令,来完成同一组的形成。而且,指令解码器10被配置为将已经被分组到用于原子序列的同一组内的独立指令转译为单个内部原子操作。
[0093]在一个实施例中,当在指令组中未捕获原子序列时,根据现有技术独立地执行每一个指令。在至少一个实施例中,诸如存储条件指令的至少一个指令当在除了第一解码器A(在图2)之外的解码器中被发现时被拒绝,除非可以使用DT1将其组合为单个原子内部操作。
[0094]图13图示了可以在示例性实施例中包括的、具有能力的计算机1300的示例。在此所述的各种方法、过程、模块、流程图、工具、应用、电路、元件和技术也可以包含和/或利用计算机1300的能力。而且,计算机1300的能力可以用于实现在此所述的示例性实施例的特征。计算机1300的能力的一个或多个可以用于实现、连接到和/或支持在此在图1-12和14中所述的(本领域技术人员理解的)任何元素。例如,可以在处理器1310中并入处理器核心100。
[0095]通常,在硬件架构上,计算机1300可以包括经由本地接口(未示出)可通信地耦合的一个或多个处理器1310、计算机可读存储存储器1320和一个或多个输入和/或输出(I/O)装置1370。本地接口可以例如但是不限于本领域中已知的一条或多条总线或其他有线或无线连接。本地接口可以具有另外的元件,诸如控制器、缓冲器(高速缓存)、驱动器、中继器和接收器,用于使能通信。而且,本地接口可以包括地址、控制和/或数据连接,用于使能在上述组件之间的适当的通信。
[0096]处理器1310是用于执行可以在存储器1320中存储的软件的硬件装置。处理器1310可以实际上是在与计算机1300相关联的几个处理器中的任何定制或市售的处理器、中央处理单元(CPU)、数据信号处理器(DSP)或辅助处理器,并且处理器1310可以是基于半导体的微处理器(以微芯片的形式)或宏处理器。
[0097]计算机可读存储器1320可以包括易失性存储器元件(例如,随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等)和非易失性存储器元件(例如,ROM、可擦除可编程只读存储器(EPROM)、电子可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、致密盘只读存储器(CD-ROM)、光盘只读存储器(⑶-R0M),磁盘、软盘、盒式磁带和磁带盒等)的任何一个或组合。而且,存储器1320可以包含电子的、磁的、光学的和/或其他类型的存储介质。注意,存储器1320可以具有分布式架构,其中,各种组件彼此远离,但是可以被处理器1310访问。
[0098]在计算机可读存储器1320中的软件可以包括一个或多个独立程序,其中,每一个程序包括用于实现逻辑函数的可执行指令的有序列表。在存储器1320中的软件包括示例性实施例的适当的操作系统(0/S) 1350、编译器1340、源代码1330和一个或多个应用1360。如所示,应用1360包括用于实现示例性实施例的特征、处理、方法、功能和操作的多种功能组件。计算机1300的应用1360可以表示多个应用、代理、软件组件、模块、接口、控制器等,如在此所述,但是应用1360不意味着是限制。
[0099]操作系统1350可以控制其他计算机程序的执行,并且提供调度、输入输出控制、文件和数据管理、存储器管理和通信控制和相关的服务。
[0100]应用到1360可以使用面向服务的架构,其可以是与每一个进行通信的服务的集合。而且,面向服务的架构允许两个或更多的服务以协作和/或执行行为(例如,代表彼此)。在服务之间的每一个交互可以被自包含和松耦合,使得每一个交互独立于任何其他交互。
[0101]而且,应用1360可以是源程序、可执行程序(对象码)、脚本或包括要执行的一组指令的任何其他实体。当源程序时,则通常经由可以或可以不被包括在存储器1320内的编译器(诸如编译器1340)、汇编器或解释器等转译该程序,以便与操作系统(0/S) 1350相结合地正确地运行。而且,应用1360可以被写入为(a)面向对象的编程语言,其具有数据的类和方法,或者(b)过程编程语言,其具有例程、子例程和/或函数。
[0102]I/O装置1370可以包括输入装置(或外围装置),诸如例如但是不限于鼠标、键盘、扫描器、麦克风、相机等。而且,I/o装置1370也可以包括输出装置(或外围装置),例如但是不限于,打印机、显示器等。最后,I/O装置1370可以进一步包括传送输入和输出两者的装置,例如但是不限于NIC或调制器/解调器(用于访问远程装置、其他文件、装置、系统或网络)、射频(RF)或其他收发器、电话接口、电桥(bridge)、路由器等。I/O装置1370也包括用于通过诸如因特网或内联网的各种网络来进行通信的组件。I/O装置1370可以利用蓝牙连接和电缆(经由例如,通用串行总线(USB)端口、串行端口、并行端口、FireWire (火线)、HDMI (高清晰度多媒体接口)等)来连接到处理器1310和/或与处理器1310进行通?目。
[0103]当计算机1300在运行时,处理器1310被配置为执行在存储器1320中存储的软件,以向存储器1320发送数据和从存储器1320接收数据,并且总体上根据软件来控制计算机1300的操作。应用1360和操作系统1350被处理器1310整体或部分地读取,可能被缓冲在处理器1310内,并且然后被执行。
[0104]当以软件实现应用1360时,应当注意,应用1360可以被存储在实际上任何计算机可读存储介质上以由任何计算机相关系统或方法使用或与其相结合地使用。在该文件的上下文中,计算机可读存储介质可以是电子的、磁的、光学的或其他物理的装置或部件,其可以包含或存储计算机程序,以由计算机相关系统和方法使用或与其相结合地使用。
[0105]应用1360可以被包含在任何计算机可读介质1320中以由指令执行系统、设备、月艮务器或装置使用或与其相结合地使用,该指令执行系统、设备、服务器或装置例如是基于计算机的系统、包含处理器的系统或可以从指令执行系统、设备或装置获取指令并且执行该指令的其他系统。在本文的上下文中,“计算机可读存储介质”可以是可以存储、读取、写入、传输或传送程序以由指令执行系统、设备或装置使用或与其相结合地使用的任何部件。该计算机可读介质可以例如但是不限于电子的、磁的、光学的或半导体的系统、设备或装置。
[0106]计算机可读介质1320的更具体示例(非穷尽性列表)包括下述部分:具有一条或多条导线的电气连接(电子)、便携计算机盘(磁或光)、随机存取存储器(RAM)(电子)、只读存储器(ROM)(电子)、可擦除可编程只读存储器(EPROM、EEPROM或快闪存储器)(电子)、光纤(光学)和便携致密盘存储器(CDR0M、CD R/W)(光学)。
[0107]在其中以硬件来实现应用1360的示例性实施例中,可以使用下面的技术的任何一个或组合来实现应用1360,其中每一个在本领域中公知:具有用于在数据信号上实现逻辑函数的逻辑门的离散(discrete)逻辑电路、具有适当的组合逻辑门的专用集成电路(ASIC)、可编程门阵列(PGA)、现场可编程门阵列(FPGA)等。
[0108]可以明白,计算机1300包括可以在在此所述的各个装置、服务器和系统中包括的软件和硬件组件的非限定性示例,并且可以明白,可以在示例性实施例中描述的各个装置和系统中包括另外的软件和硬件组件。
[0109]如上所述,可以以计算机实现的处理和用于实施那些处理的设备的形式来体现实施例。实施例可以包括在计算机可读/可用介质1402上的如图14中描述的计算机程序产品1400,计算机可读/可用介质1402具有计算机程序代码逻辑1404,计算机程序代码逻辑1404包含在作为制造品的有形介质中包含的指令。用于计算机可读/可用介质1402的示例性制造品可以包括软盘、⑶-ROM、硬盘驱动器、通用串行总线(USB)快闪驱动器或任何其他计算机可读存储介质,其中,当计算机程序代码逻辑1404被加载到计算机内并且被其执行时,该计算机变为用于实施本发明的设备。实施例包括计算机程序代码逻辑1404,例如,无论是否被存储在存储介质中,加载到计算机内和/或被其执行,或者通过某种传输介质被传输,诸如通过电线或线缆、通过光纤或经由电磁辐射,其中,当该计算机程序代码逻辑1404被加载到计算机内并且被其执行时,该计算机变为用于实施本发明的设备。当在通用微处理器上被实现时,该计算机程序代码逻辑1404分段配置该微处理器以建立特定逻辑电路。
[0110]技术效果和益处包括减少处理时间。在在此所述的示例性的被检测原子序列中的代码(例如,诸如在图3和4中的代码)可能受到延迟问题的影响。在代码中的这些延迟问题是可能需要对于相关点的两个“往返行程”,即,分别对于stwcx和Iwarx指令花费多个处理器周期,以首先加载并且有条件地更新在相干点处的值。作为比较,其中要执行的操作被发送到存储器巢(即,存储器子系统1020)的存储器巢(内部)原子操作(由解码器10产生)可能仅需要一个往返行程来发送(通过AFU 20)具有任何参数的请求并且接收结果(在处理器核心100处接收回)。
[0111]在现有技术中,当存储器位置(在存储器1030或寄存器1015中)被严重竞争时,需要另外的复杂逻辑来防止活锁和饥饿,其中,没有竞争核心可以成功地完成原子序列与Iwarx和stwcx指令的同步代码。然而,为了避免这一点,当可以在高性能存储器子系统1020(例如,用于传统处理器)中实现诸如原子交换、原子递增等的内部原子操作时,实施例提供这种内部原子操作。因此,将用于描述使用加载保留和存储条件的存储器同步操作的指令的序列转译为使用解码时间指令优化的内部存储器子系统操作(即,内部原子操作)。
[0112]在此使用的术语仅用于描述特定实施例的目的,并且不意欲限制本发明。如在此使用,单数形式“一个”和“该”意欲也包括复数形式,除非上下文清楚地另外指示。可以进一步明白,术语“包括”当在本说明书中使用时指定所述特征、整数、步骤、操作、元素和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组的存在或增加。
[0113]在所附的权利要求中的所有部件或步骤加功能元素的对应的结构、材料、行为和等同物意欲包括用于与具体要求保护的其他所要求保护元素相组合地执行功能的任何结构、材料或行为。本发明的说明已经为了例示和说明而被提供,并且不意欲是穷尽性的或限于所公开的形式的发明。在不偏离本发明的范围的情况下,许多修改和变化对于本领域内的普通技术人员显然。实施例被选择和描述以便最佳地解释本发明的原理和实际应用,并且使得其他本领域内的普通技术人员能够明白本发明的、具有适合于所考虑的特定用途的各种修改的各个实施例。
[0114]所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0115]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0116]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0117]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0118]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。Java以及所有基于Java的商标及标识都是Oracle公司和/或其关联公司的商标或注册商标。
[0119]下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0120]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[0121]计算机程序指令也可以被加载到计算机、其他可编程数据处理设备或其他装置上,以使得在该计算机、其他可编程设备或其他装置上执行一系列操作步骤以产生计算机实现的处理,使得在计算机或其他可编程设备上执行的指令提供用于实现在流程图和/或框图的一个或多个方框中执行的功能/行为的处理。
[0122]如上所述,可以以用于实施那些处理的计算机实现的处理和设备的形式来体现实施例。在实施例中,在由一个或多个网络部件执行的计算机程序代码中包含本发明。实施例包括在计算机可用介质上的计算机程序产品,该计算机可用介质具有计算机程序代码逻辑,该计算机程序代码逻辑包含在作为制造品的有形介质中包含的指令。用于计算机可用介质的示例性制造品可以包括软盘、CD-ROM、硬盘驱动器、通用串行总线(USB)快闪驱动器或任何其他计算机可读存储介质,其中,当计算机程序代码逻辑被加载到计算机内并且被其执行时,该计算机变为用于实施本发明的设备。实施例包括计算机程序代码逻辑,例如,无论被存储在存储介质中,加载到计算机内和/或被其执行,或者通过某种传输介质被传输,诸如通过电线或线缆、通过光纤或经由电磁辐射,其中,当该计算机程序代码逻辑被加载到计算机内并且被其执行时,该计算机变为用于实施本发明的设备。当在通用微处理器上被实现时,该计算机程序代码逻辑分段配置该微处理器以建立特定逻辑电路。
[0123]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
【权利要求】
1.一种用于更换原子序列的计算机实现的方法,所述方法包括: 处理电路接收所述原子序列; 所述处理电路检测所述原子序列;并且, 所述处理电路产生内部原子操作以更换所述原子序列。
2.根据权利要求1所述的计算机实现的方法,进一步包括:取代所述原子序列而执行所述内部原子操作。
3.根据在前的权利要求的任何一项所述的计算机实现的方法,其中,所述原子序列包括加载保留指令和存储条件指令。
4.根据权利要求3所述的计算机实现的方法,其中,检测所述原子序列包括:识别所述加载保留指令和所述存储条件指令,以检测需要更换的所述原子序列。
5.根据在前的权利要求的任何一项所述的计算机实现的方法,进一步包括: 基于所述原子序列的独立指令不是同一组和基于所述独立指令被定位得独立地执行,配置指令解码器以执行不在同一组中的所述独立指令的指令高速缓存标记,以将加载保留指令和存储条件指令强制到同一组内; 配置所述指令解码器,以基于在所述独立指令中首先检测到所述加载保留指令来初始地标记所述加载保留指令,或者基于在所述独立指令中首先检测到所述存储条件指令来初始地标记所述存储条件指令; 配置所述指令解码器,以通过基于在所述独立指令中最后检测到所述加载保留指令而标记所述加载保留指令或通过基于在所述独立指令中最后检测到所述存储条件指令而标记所述存储条件指令,来完成同一组的形成;以及 配置所述指令解码,以将已经被分组到用于所述原子序列的同一组内的所述独立指令转译为所述内部原子操作。
6.根据在前的权利要求的任何一项所述的计算机实现的方法,其中,预解码优化器被配置为检测所述原子序列并且在通过指令高速缓存来高速缓存之前产生所述内部原子操作。
7.根据在前的权利要求的任何一项所述的计算机实现的方法,其中,在存储器子系统和原子功能单元的至少一个中执行所述内部原子操作。
8.根据在前的权利要求的任何一项所述的计算机实现的方法,包括步骤:存储器子系统执行所述内部原子操作;并且向所述处理电路发送结果。
9.一种用于更换原子序列的计算机系统,所述系统包括: 处理电路, 可操作地连接所述处理电路的存储器; 接收部件,用于通过所述处理电路接收所述原子序列; 检测部件,用于通过所述处理电路来检测所述原子序列;以及, 产生部件,用于通过所述处理电路来产生内部原子操作以更换所述原子序列。
10.根据权利要求9所述的计算机系统,其中,所述系统进一步包括执行部件,用于取代所述原子序列而执行所述内部原子操作。
11.根据权利要求9或10的任何一项所述的计算机系统,其中,所述检测部件包括识别部件,用于识别用于检测需要被更换的所述原子序列的加载保留指令和存储条件指令。
12.根据权利要求9至11的任何一项所述的计算机系统,进一步包括: 响应于所述原子序列的独立指令不是同一组并且基于所述独立指令被定位得独立执行,配置用于配置指令解码器以执行未在同一组中的所述独立指令的指令高速缓存标记、以将加载保留指令和存储条件指令强制到同一组内的部件; 配置用于配置所述指令解码器以基于在所述独立指令中首先检测到所述加载保留指令来初始地标记所述加载保留指令、或者基于在所述独立指令中首先检测到所述存储条件指令来初始地标记所述存储条件指令的部件; 配置用于配置所述指令解码器、以通过基于在所述独立指令中最后检测到所述加载保留指令而标记所述加载保留指令或通过基于在所述独立指令中最后检测到所述存储条件指令而标记所述存储条件指令来完成同一组的形成的部件;以及 配置用于配置所述指令解码、以将已经被分组到用于所述原子序列的同一组内的所述独立指令转译为所述内部原子操作的部件。
13.根据权利要求9至12的任何一项所述的计算机系统,其中,预解码优化器可操作用于检测所述原子序列,并且用于在通过指令高速缓存来高速缓存之前产生所述内部原子操作。
14.一种用于更换原子序列的计算机程序产品,所述计算机程序产品包括: 计算机可读存储介质,其能够被处理电路读取,并且存储由所述处理电路执行来用于执行根据权利要求1至8的任何一项所述的方法的指令。
15.一种在计算机可读介质上存储并且能够加载到数字计算机的内部存储器内的计算机程序,包括软件代码部分,所述软件代码部分当所述程序在计算机上运行时用于执行权利要求I至8的任何一项所述的方法。
【文档编号】H04N13/00GK104205820SQ201380017409
【公开日】2014年12月10日 申请日期:2013年2月15日 优先权日:2012年3月28日
【发明者】M.K.格施温德 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1