在指令处理电路中融合具有相反条件的有条件写入指令,以及相关处理器系统、方法和计...的制作方法

文档序号:6533740阅读:184来源:国知局
在指令处理电路中融合具有相反条件的有条件写入指令,以及相关处理器系统、方法和计 ...的制作方法
【专利摘要】揭示在指令处理电路中融合具有相反条件的有条件写入指令,以及相关处理器系统、方法和计算机可读媒体。在一个实施例中,由指令处理电路检测基于评估第一条件将第一值写入到目标寄存器的第一有条件写入指令。所述电路还检测基于评估作为所述第一条件的逻辑相反条件的第二条件将第二值写入到所述目标寄存器的第二有条件写入指令。所述第一条件或所述第二条件被选择为经融合指令条件,且对应的值被选择为if-true值和if-false值。产生经融合指令,以用于在所述经融合指令条件评估为真的情况下选择性地将所述if-true值写入到所述目标寄存器且在所述经融合指令条件评估为假的情况下选择性地将所述if-false值写入到所述目标寄存器。
【专利说明】在指令处理电路中融合具有相反条件的有条件写入指令,以及相关处理器系统、方法和计算机可读媒体
[0001]优先权串请
[0002]本申请案主张2012年5月16日申请的标题为“在指令处理电路中融合具有相反条件的有条件指令,以及相关处理器系统、方法和计算机可读媒体(FUSING CONDIT1NALINSTRUCT1NS HAVING OPPOSITE CONDIT1NS IN INSTRUCT1N PROCESSING CIRCUITS,ANDRELATED PROCESSOR SYSTEMS,METHODS, AND COMPUTER-READABLE MEDIA) ”的第 61/647,572号美国临时专利申请案的优先权,所述临时申请案全文以引用的方式并入本文中。

【技术领域】
[0003]本发明的技术大体涉及基于中央处理单元(CPU)的系统中的管线式计算机指令的处理。

【背景技术】
[0004]现代计算机架构中“指令管线化”的发明已产生CPU资源的改进的利用和计算机应用的较快执行时间。指令管线化是可借以通过将每一指令的处理分裂为一系列步骤而增加正由CPU处理的计算机指令的处理量的处理技术。指令接着在由多个级组成的“处理器管线”中执行,其中每一级针对一系列指令的每一者实行步骤的一者。因此,在每一 CPU时钟循环中,可并行评估针对多个指令的步骤。CPU可采用多个处理器管线来进一步提升性倉泛。
[0005]管线式计算架构中CPU的性能可受不必要或冗余指令的发布以及管线“危险”的发生两者阻碍,管线“危险”的发生可阻止所发布指令在其所指定CPU时钟循环期间执行。举例来说,在一些指令集架构中,有条件写入指令的执行可包含从目标寄存器读取值、评估条件,以及基于所述条件的评估将值写入到目标寄存器。在此情况下,可遭遇管线危险(特定来说,“写入之后读取”危险)。为解决写入之后读取危险,CPU可“停止”或延迟第二有条件写入指令的执行直到第一有条件写入指令已完全执行为止,因此进一步减小CPU的有效处理量。


【发明内容】

[0006]本发明的实施例提供在指令处理电路中融合具有相反条件的有条件写入指令。还揭示相关处理器系统、方法和计算机可读媒体。在此方面,在一个实施例中,提供一种指令处理电路。所述指令处理电路经配置以检测指令流中的第一有条件写入指令,其指示基于评估第一条件将第一值写入到目标寄存器的操作。所述指令处理电路还经配置以检测指令流中的第二有条件写入指令,其指示基于评估作为第一条件的逻辑相反条件的第二条件将第二值写入到目标寄存器的操作。所述指令处理电路进一步经配置以选择第一条件或第二条件的一者作为经融合指令条件。所述指令处理电路额外经配置以选择第一值或第二值的对应于经融合指令条件的一者作为if-true值,且选择第一值或第二值的不对应于经融合指令条件的一者作为if-false值。所述指令处理电路还经配置以产生经融合指令,其指示在经融合指令条件评估为真的情况下选择性地将if-true值写入到目标寄存器且在经融合指令条件评估为假的情况下选择性地将if-false值写入到目标寄存器的操作。以此方式,经融合指令的产生通过避免冗余指令的发布且通过移除写入之后读取危险的可能性而改进CPU的性能。
[0007]在另一实施例中,提供一种指令处理电路,其包括用于检测指令流中的第一有条件写入指令的装置,所述第一有条件写入指令指示基于评估第一条件将第一值写入到目标寄存器的操作。所述指令处理电路还包括用于检测指令流中的第二有条件写入指令的装置,所述第二有条件写入指令指示基于评估作为第一条件的逻辑相反条件的第二条件将第二值写入到目标寄存器的操作。所述指令处理电路进一步包括用于选择第一条件或第二条件的一者作为经融合指令条件的装置。所述指令处理电路额外包括用于选择第一值或第二值的对应于经融合指令条件的一者作为if-true值的装置,以及用于选择第一值或第二值的不对应于经融合指令条件的一者作为if-false值的装置。所述指令处理电路还包括用于产生经融合指令的装置,所述经融合指令指示在经融合指令条件评估为真的情况下选择性地将if-true值写入到目标寄存器且在经融合指令条件评估为假的情况下选择性地将if-false值写入到目标寄存器的操作。
[0008]在另一实施例中,提供一种用于处理计算机指令的方法。所述方法包括检测指令流中的第一有条件写入指令,其指示基于评估第一条件将第一值写入到目标寄存器的操作。所述方法还包括检测指令流中的第二有条件写入指令,其指示基于评估作为第一条件的逻辑相反条件的第二条件将第二值写入到目标寄存器的操作。所述方法进一步包括选择第一条件或第二条件的一者作为经融合指令条件。所述方法额外包括选择第一值或第二值的对应于经融合指令条件的一者作为if-true值,以及选择第一值或第二值的不对应于经融合指令条件的一者作为if-false值。所述方法还包括产生经融合指令,其指示在经融合指令条件评估为真的情况下选择性地将if-true值写入到目标寄存器且在经融合指令条件评估为假的情况下选择性地将if-false值写入到目标寄存器的操作。
[0009]在另一实施例中,提供一种非暂时性计算机可读媒体,其上存储有计算机可执行指令以致使处理器实施一种用于检测指令流中的第一有条件写入指令的方法,所述第一有条件写入指令指示基于评估第一条件将第一值写入到目标寄存器的操作。通过计算机可执行指令实施的所述方法进一步包含检测指令流中的第二有条件写入指令,其指示基于评估作为第一条件的逻辑相反条件的第二条件将第二值写入到目标寄存器的操作。通过计算机可执行指令实施的所述方法还包含选择第一条件或第二条件的一者作为经融合指令条件。通过计算机可执行指令实施的所述方法额外包含选择第一值或第二值的对应于经融合指令条件的一者作为if-true值,以及选择第一值或第二值的不对应于经融合指令条件的一者作为if-false值。通过计算机可执行指令实施的所述方法还包含产生经融合指令,其指示在经融合指令条件评估为真的情况下选择性地将if-true值写入到目标寄存器且在经融合指令条件评估为假的情况下选择性地将if-false值写入到目标寄存器的操作。

【专利附图】

【附图说明】
[0010]图1是提供在基于处理器的系统中用于检索和处理待放置到一或多个执行管线中的计算机指令的示范性组件的框图,其包含经配置以融合具有相反条件的有条件写入指令的示范性指令处理电路;
[0011]图2是说明基于以下操作产生的示范性经融合指令的图:检测指示将第一中间值写入到寄存器的操作的第一有条件写入指令,以及检测将第二中间值写入到相同寄存器的具有与第一有条件写入指令的条件逻辑上相反的条件的第二有条件写入指令;
[0012]图3是说明用于基于检测具有相反条件的有条件写入指令产生经融合指令的指令处理电路的示范性过程的流程图;
[0013]图4A-4C是说明用于基于检测具有相反条件且指示向寄存器写入的操作的有条件写入指令产生经融合指令的指令处理电路的更详细示范性过程的流程图;
[0014]图5是说明基于具有寄存器操作数和相反条件的有条件写入指令产生的示范性经融合指令的图;
[0015]图6是说明基于具有零和非零中间值操作数以及相反条件的有条件写入指令产生的其它示范性经融合指令的图;
[0016]图7是说明基于具有寄存器操作数的有条件写入指令产生的其它示范性经融合指令的图;
[0017]图8是说明基于非连续有条件写入指令产生的示范性经融合指令的图;以及
[0018]图9是可包含指令处理电路(包含图1的指令处理电路)的示范性基于处理器的系统的框图,所述指令处理电路经配置以检测具有相反条件的有条件写入指令且经配置以产生经融合指令。

【具体实施方式】
[0019]现参看图式,描述本发明的若干示范性实施例。本文使用词语“示范性”来表示“充当实例、例子或说明”。本文描述为“示范性”的任何实施例不一定解释为比其它实施例优选或有利。还应理解,尽管本文可使用术语“第一”、“第二”等来描述各个元件,但这些术语仅用于将元件彼此区分,且因此区分的元件不应受这些术语限制。举例来说,第一指令可称为第二指令,且类似地,第二指令可称为第一指令,而不脱离本发明的教示。
[0020]本发明的实施例提供在指令处理电路中融合具有相反条件的有条件写入指令。还揭示相关处理器系统、方法和计算机可读媒体。在此方面,在一个实施例中,提供一种指令处理电路。所述指令处理电路经配置以检测指令流中的第一有条件写入指令,其指示基于评估第一条件将第一值写入到目标寄存器的操作。所述指令处理电路还经配置以检测指令流中的第二有条件写入指令,其指示基于评估作为第一条件的逻辑相反条件的第二条件将第二值写入到目标寄存器的操作。所述指令处理电路进一步经配置以选择第一条件或第二条件的一者作为经融合指令条件。所述指令处理电路额外经配置以选择对应于经融合指令条件的第一值或第二值的一者作为if-true值,且选择不对应于经融合指令条件的第一值或第二值的一者作为if-false值。所述指令处理电路还经配置以产生经融合指令,其指示在经融合指令条件评估为真的情况下选择性地将if-true值写入到目标寄存器且在经融合指令条件评估为假的情况下选择性地将if-false值写入到目标寄存器的操作。以此方式,经融合指令的产生通过避免冗余指令的发布且通过移除写入之后读取危险的可能性及其由于管线式计算架构中的有条件写入指令之间的相依性引起的相关联后果而改进CPU的性能。
[0021]在此方面,图1是用于检索和处理待放置到一或多个执行管线12(0_Q)中的计算机指令的示范性基于处理器的系统10的框图。如下文将更详细论述,基于处理器的系统10提供经配置以基于具有相反条件的有条件写入指令产生经融合指令的指令处理电路14。举例来说,指令可指示用于从寄存器16 (O-M)读取和/或向寄存器16 (O-M)写入数据的操作,所述寄存器提供可由基于处理器的系统10存取的本地高速存储。如本文论述,“指令”可指代引导计算机处理器实行指定任务的由指令集架构所界定的位的组合。示范性指令集架构包含(但不限于)ARM、Thumb和A64架构。
[0022]继续参看图1,在指令流18表示的连续流中在基于处理器的系统10中处理指令。指令流18可随着基于处理器的系统10操作和执行指令而持续推进。在此所说明的实例中,指令流18以指令存储器20开始,指令存储器20提供针对计算机可执行程序中的指令的永久存储。
[0023]指令取得电路22从指令存储器20和/或任选地从指令高速缓冲存储器24读取箭头23表示的指令。指令取得电路22可递增通常存储在寄存器16(0-M)的一者中的程序计数器。指令高速缓冲存储器24是任选缓冲器,其可经提供并耦合到指令存储器20且耦合到指令取得电路22以允许指令取得电路22对经高速缓存指令的直接存取。如果指令先前未存储在指令高速缓冲存储器24中,那么指令高速缓冲存储器24可加速指令检索时间,但以潜在较长读取时间为代价。
[0024]一旦指令由指令取得电路22取得,其就进行到指令解码电路26,指令解码电路26将指令转化为处理器特定微指令。在此实施例中,指令解码电路26同时保持多个指令
28(O-N)的群组以供解码。在指令已被取得和解码之后,其任选地发布到指令队列30(即,用于存储指令的缓冲器),或其可发布到执行管线12 (O-Q)的一者以供执行。在一些实施例中,执行管线12(0-Q)可限制可由在执行管线12(0-Q)内执行的指令实行的操作的类型。举例来说,管线Ptl可不允许对寄存器16 (O-M)的读取存取;因此,指示读取寄存器Rtl的操作的指令仅可发布到执行管线P1到Pq的一者。
[0025]继续参看图1,指令处理电路14经配置以检测具有相反条件的有条件写入指令,且产生经融合指令以移除冗余指令并排除对于这些指令的写入之后读取危险的可能性。指令处理电路14可为任何类型的装置或电路,且可以处理器、DSP、专用集成电路(ASIC)、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或经设计以执行本文描述的功能的其任何组合实施或执行。在一些实施例中,指令处理电路14并入到指令取得电路22、指令解码电路26和/或任选指令队列30中。指令处理电路14还可采用指令选择旗标32来确定哪一检测到的有条件写入指令可在指令流18中被经融合指令代替,如将参看图4C更详细论述。另外,指令处理电路14的一些实施例可使用状态寄存器34来存储条件代码36,条件代码36表示关于指令在指令流18中执行的状态(例如,比较指令的结果)的信息。
[0026]为提供对融合图1的基于处理器的系统10中具有相反条件的有条件写入指令的阐释,提供图2。图2说明由图1的指令处理电路14产生的示范性经融合指令。在此实例中,检测到的指令流38表示从指令流18取得且由图1的指令处理电路14检测到的一系列指令。首先在检测到的指令流38中的是SET_C0NDIT10N指令40,其表示导致设定图1的状态寄存器34中的条件代码36的指令。举例来说,在一些实施例中,SET-_CONDIT1N指令40可包括将图1所示的寄存器16 (O-M)中的两者的内容比较的指令(例如,ARM架构CMP指令)。在一些实施例中,SET_CONDIT1N指令40可包括指示全体设定图1的状态寄存器34中的条件代码36的多个操作的多个指令。
[0027]接着在检测到的指令流38中检测第一有条件写入指令42。在此实例中,第一有条件写入指令42是IF_EQ_WRITE( “如果相等,则写入”)指令,其评估“EQ”或“相等”的第一条件44且还指定操作数46指定的目标寄存器和操作数48指定的源寄存器。在此实例中,操作数46、48各自指向寄存器16(0-M)的一者,其在此实例中分别称为目标寄存器R1和源寄存器R2。IF_EQ_WRITE第一有条件写入指令42指示如在图1的状态寄存器34中的指令代码36指示“相等”条件的情况下将源寄存器R2的值写入到目标寄存器R1中的操作。在一些实施例中,IF_EQ_WRITE第一条件写入指令42可在评估指令代码36是否指示“相等”条件之前读取目标寄存器I。这可使得在指令代码36不指示“相等”条件的情况下IF_EQ_WRITE第一条件写入指令42能够恢复目标寄存器R1的原始值。应理解,IF_EQ_WRITE第一有条件写入指令42可在检测到的指令流38中紧接在SET_C0NDIT10N指令40之后取得,或IF_EQ_WRITE第一有条件写入指令42和SET_C0NDIT10N指令40可在检测到的指令流38中被其它介入指令分离。
[0028]在检测到的指令流38中向下较远处的是第二有条件写入指令50,其在此处是评估“NE”或“不相等”(即,作为第一条件44的逻辑相反条件的条件)的第二条件52的IF_NE_WRITE ( “如果不相等,则写入”)指令。IF_NE_WRITE第二有条件写入指令50还指定操作数54指定的目标寄存器和操作数56指定的源寄存器。在此实例中,操作数54指向目标寄存器R1,而操作数56指向寄存器16 (O-M)的一者,在此实例中称为源寄存器R3。IF_NE_WRITE第二有条件写入指令50指示在图1的状态寄存器34中的条件代码36指示“不相等”条件(即,IF_EQ_WRITE第一有条件写入指令42的第一条件44的逻辑相反条件)的情况下将源寄存器R3的值写入到目标寄存器R1中的操作。如图2所见,IF_NE_WRITE第二有条件写入指令50的操作数54指定与IF_EQ_WRITE第一有条件写入指令42的操作数46相同的目标寄存器札。应理解,IF_NE_WRITE第二有条件写入指令50可在检测到的指令流38中紧接在IF_EQ_WRITE第一有条件写入指令42之后取得,或IF_NE_WRITE第二有条件写入指令50和IF_EQ_WRITE第一有条件写入指令42可在检测到的指令流38中被其它介入指令分离。
[0029]在一些实施例中,IF_NE_WRITE第二有条件写入指令50可在评估指令代码36是否指示“不相等”条件之前读取目标寄存器%。以此方式,在指令代码36不指示“不相等”条件的情况下IF_NE_WRITE第二有条件写入指令50可恢复目标寄存器R1的原始值。然而,应理解,这还可产生IF_NE_WRITE第二有条件写入指令50与IF_EQ_WRITE第一有条件写入指令42之间的写入之后读取危险的可能性。
[0030]图1的指令处理电路14接着产生经融合指令58,所述经融合指令58在此实例中为PAIRED_IF_EQ_WRITE( “如果相等则配对,接着写入”)指令。在此实例中的PAIRED_IF_EQ_WRITE经融合指令58评估经融合指令条件60,其与IF_EQ_WRITE第一有条件写入指令42的第一条件44 (即,“EQ”或“相等”)相同。PAIRED_IF_EQ_WRITE经融合指令58还指定由操作数62指定的目标寄存器Rp由操作数64指定的“if-true”值,以及由操作数66指定的“if-false”值。如果PAIRED_IF_EQ_WRITE经融合指令58的经融合指令条件60评估为真,那么PAIRED_IF_EQ_WRITE经融合指令58将把操作数64指定的寄存器的值或中间值写入到目标寄存器R1 ;如果为假,那么PAIRED_IF_EQ_WRITE经融合指令58将把操作数66指定的寄存器的值或中间值写入到目标寄存器札。
[0031]在此实例中,PAIRED_IF_EQ_WRITE经融合指令58指示在图1的状态寄存器34中的条件代码36指示“相等”条件的情况下将寄存器R2的值(操作数64指定)写入到目标寄存器R1 (操作数62)中的操作,且进一步指示在图1的状态寄存器34中的条件代码36指示“不相等”条件的情况下将寄存器R3的值(操作数66)写入到目标寄存器R1 (操作数62)中的操作。通过将IF_EQ_WRITE第一有条件写入指令42与IF_NE_WRITE第二有条件写入指令50融合为PAIRED_IF_EQ_WRITE经融合指令58,避免了冗余有条件写入指令的发布,且排除了针对IF_EQ_WRITE/IF_NE_WRITE有条件指令对的写入之后读取危险的可能性。
[0032]如上文参看图2描述,操作数48和操作数56可各自依据SET_C0NDIT10N指令40的结果指定提供待写入到目标寄存器&(分别由操作数46、54指定)的值的寄存器。在典型实施例中,操作数48和操作数56指定不同寄存器。根据本文描述的一些实施例,操作数48和操作数56可各自指定中间值,所述中间值的一者为零且另一中间值为非零。根据本文描述的一些实施例,操作数48、56的一者可指定提供待写入到目标寄存器R1的值的寄存器,而另一者可指定具有零或非零的值的中间值。一些实施例可规定,第一有条件写入指令42为IF_NE_WRITE指令,且第二有条件写入指令50为IF_EQ_WRITE指令。在一些实施例中,经融合指令条件60可与第二条件52相同(即,“NE”或“不相等”);在此类实施例中,操作数64和操作数66指定的值将反转。根据一些实施例,IF_EQ_WRITE指令为例如ARM架构MOVEQ指令,而在一些实施例中,IF_NE_WRITE指令可为例如ARM架构MOVNE指令。
[0033]为进一步说明融合具有相反条件的有条件写入指令,通过图3且进一步参看图1和2说明经配置以检测有条件写入指令并产生经融合指令的指令处理电路的示范性一般化过程。在此实例中,所述过程通过图1的指令处理电路14基于第一条件44的评估检测第一有条件写入指令42将操作数48指定的第一值写入到操作数46指定的目标寄存器(寄存器16 (O-M)的一者)而开始(框68)。指令处理电路14接下来基于第二条件52的评估检测第二有条件写入指令50将操作数56指定的第二值写入到操作数54指示的目标寄存器(框70)。如上所述,第二条件52是第一条件44的逻辑相反条件(例如,第一条件44可为“EQ”或“相等”,且第二条件52可为“NE”或“不相等”)。
[0034]指令处理电路14接着选择第一条件44或第二条件52以用作经融合指令条件60 (框72)。对应于经融合指令条件60的第一值或第二值由指令处理电路14选择作为操作数64指定的“if-true”值(框74)。指令处理电路14还选择对应于经融合指令条件60的第一值或第二值作为操作数66指定的“if false”值(框76)。指令处理电路14接着产生经融合指令58以在经融合指令条件60评估为真的情况下选择性地将“if-true”值写入到目标寄存器且在经融合指令条件60评估为假的情况下选择性地将“if-false”值写入到目标寄存器(框78)。
[0035]图4A-4C说明用于检测指令流(例如,图1的指令流18)中具有相反条件的有条件写入指令且用于产生经融合指令(例如,图2的经融合指令58)指令处理电路(例如,图1的指令处理电路14)的更详细示范性过程。图4A详述用于确定是否在指令流中检测到可融合的有条件写入指令的过程。图4B说明用于依据检测到的有条件写入指令的操作数的类型(例如,指定两个寄存器的操作数、指定零中间值和非零中间值的操作数,或寄存器/中间值操作数的某一其它组合)产生经融合指令的示范性操作。图4C展示用于用所产生的经融合指令代替指令流中的有条件写入指令的一者的操作。
[0036]此实例中的过程在图4A中以指令处理电路检测是否更多指令仍待处理而开始(框80)。在一些实施例中,此检测过程通过检测指令取得电路和/或指令解码电路(例如,分别图1的指令取得电路22和/或指令解码电路26)中未经处理指令的存在而实现。如果未检测到剩余指令,那么指令处理电路返回到图4A的框80。
[0037]如果检测到任何剩余指令,那么指令处理电路确定检测到的指令(“第一指令”)是否为指示向目标寄存器(例如,图1的寄存器16(0_M)的一者,在此实例中称为目标寄存器Rx)进行写入的操作的有条件写入指令(图4A的框82)。此指令的检测指示指令处理电路可能够将指令流内的第一指令和第二有条件写入指令转换为经融合指令。在第一指令不是有条件写入指令的事件中,不存在产生经融合指令的机会,且第一指令的处理继续(图4A的框84)。指令处理电路接着返回到图4A的框80。
[0038]返回到图4A的框82处的决策点,如果第一指令是有条件写入指令,那么指令处理电路检测指令流中的第二指令(图4A的框86)。指令处理电路接着确定第二指令是否满足以下准则:其为有条件写入指令;其评估作为第一指令所评估的条件的逻辑相反条件的条件;且其指示向作为由第一指令写入的相同寄存器的目标寄存器Rx进行写入的操作(图4A的框88)。如果第二指令未能满足这些准则的任一者,那么其不是与第一指令融合的候选者;然而,可能仍有可能检测到从指令流中向下较远处取得的另一有条件写入指令(即,指令流中不邻近于第一指令的有条件写入指令)且将其用于产生经融合指令。
[0039]在为此可能性做准备时,指令处理电路确定第二指令更改存储先前比较的结果的条件代码(例如,图1的状态寄存器34中的条件代码36),还是向目标寄存器Rx进行写入(图4A的框90)。如果前一情况为真,那么条件代码的先前值将在执行第二指令后变得不可存取;如果后一情况为真,那么可能不可能产生准确再现检测到的有条件写入指令的效应的经融合指令。这些事件的任一者因此排除产生经融合指令的可能性。在此情况下,第一指令和第二指令的处理继续(图4A的框84),且指令处理电路接着返回到图4A的框80。
[0040]如果指令处理电路在图4A的框90处确定第二指令不更改先前写入到目标寄存器Rx的条件代码或值,那么指令处理电路返回到图4A的框86,其中检测指令流中的另一指令。如图4A中所见,此过程接着如上文描述重复直到在框88中指令处理电路检测到满足准则的指令或在框90中指令处理电路检测到更改存储在目标寄存器的条件代码或值的指令为止。
[0041]返回到图4A的框88处的决策点,如果第二指令满足指定的准则(即,其是评估作为第一指令所评估的条件的逻辑相反条件的条件且指示向目标寄存器Rx进行写入的操作的有条件写入指令),那么指令处理电路接下来确定是否第一和第二指令一起包括可成对指令组合(框91)。一些实施例可允许仅特定指令对或仅具有特定类型操作数的指令对用于产生经融合指令。举例来说,在一些实施例中,经融合指令可仅基于其中两个指令均指定寄存器操作数的一对指令或其中一个指令指定非零中间值且另一指令指定零中间值的一对指令产生。如果第一和第二指令不包括可成对指令组合,那么第一指令和第二指令的处理继续(图4A的框84),且指令处理电路接着返回到图4A的框80。
[0042]如果指令处理电路在图4A的框91处确定第一和第二指令包括可成对指令组合,那么指令处理电路进行到图4B的框92。应理解,在此点处,第一指令和第二指令可已邻近地从指令流取得,或其可已在指令流中被其它介入指令分离。指令处理电路确定第一指令和第二指令的操作数类型,且基于所确定的操作数类型选择动作过程(图4B的框92)。在下文参看图5和6论述的一些实施例中,待由所产生的经融合指令评估的条件的选择可基于第一指令和第二指令的操作数的类型。
[0043]如果指令处理电路在图4B的框92中的决策点处确定第一指令和第二指令的源操作数均为寄存器,那么此实例中的指令处理电路选择第一指令评估的条件作为经融合指令条件(图4B的框94)。指令处理电路产生经融合指令,其评估经融合指令条件,且指定目标寄存器Rx、第一指令的源寄存器和第二指令的源寄存器作为操作数(图4B的框96)。尽管在此实例中未说明,但应理解,在一些实施例中,第二指令评估的条件可选择作为经融合指令条件,在此情况下指令处理电路将指定目标寄存器Rx、第二指令的源寄存器和第一指令的源寄存器作为操作数。处理接着在图4C的框98处重新开始,如下文更详细论述。
[0044]为更好地说明经融合指令的示范性产生,在一些实施例中,基于具有如图4B的框94和96中描述的寄存器操作数的有条件写入指令,提供图5。在图5中,检测到的指令流112描绘随着其行进穿过图1的指令流18指令处理电路14检测到的一系列指令。出于此实例的目的假定,一或多个先前指令已致使图1的状态寄存器34中的条件代码36指示“相等”或“不相等”条件(即,两个逻辑上相反条件的一者)。检测到的指令流112中首先检测到的是第一有条件写入指令114,其在此实例中为ARM架构M0VEQ( “如果相等则移动”)指令。MOVEQ第一有条件写入指令114通过评估第一条件116(即,“EQ”或“相等”)而处理条件代码36。MOVEQ第一有条件写入指令114还指定操作数118指定的目标寄存器(图1的寄存器16 (O-M)的一者)和操作数120指定的源寄存器(同样为寄存器16 (O-M)的一者)。在此实例中,寄存器R1是目标寄存器,且寄存器R2是源寄存器。MOVEQ第一有条件写入指令114指示在条件代码36指示“相等”条件的情况下将操作数120指定的源寄存器R2的值写入到操作数118指定的目标寄存器R1中的操作。
[0045]检测到的指令流112中向下较远处的是第二有条件写入指令122,其在此实例中为ARM架构M0VNE( “如果不相等则移动”)指令。MOVNE第二有条件写入指令122通过评估第二条件124( “NE”或“不相等”,其是第一条件116的逻辑相反条件)而处理条件代码36。MOVNE第二有条件写入指令122还指定操作数126指定的目标寄存器(其是MOVEQ第一有条件写入指令114的操作数118指定的相同寄存器)和操作数128指定的源寄存器(图1的寄存器16 (O-M)的一者)。在此实例中,寄存器R1是目标寄存器,且寄存器R3是源寄存器。MOVNE第二有条件写入指令122指示在条件代码36指示“不相等”条件的情况下将操作数128指定的源寄存器R3的值写入到操作数126指定的目标寄存器R1中的操作。
[0046]经融合指令130说明由图1的指令处理电路14处理MOVEQ第一有条件写入指令114和MOVNE第二有条件写入指令122的结果。经融合指令130评估经融合指令条件132,且还指定操作数134指定的目标寄存器、操作数136指定的“if-true”源寄存器,和操作数138指定的“if-false”源寄存器。在图5中说明的实施例中,如果MOVEQ第一有条件写入指令114的操作数120和MOVNE第二有条件写入指令122的操作数128均指定寄存器,那么根据以下规则产生经融合指令130 =MOVEQ第一有条件写入指令114的第一条件116用作经融合指令条件132 ;操作数134指定与操作数118和操作数126相同的目标寄存器;操作数136指定操作数120识别的源寄存器作为“if-true”源值;且操作数138指定操作数128识别的源寄存器作为“if-false”源值。尽管此实例中未说明,但应理解,在一些实施例中,第二条件124可选择作为经融合指令条件132,在此情况下操作数136、138指定的值将反转。
[0047]因此,在此实例中,经融合指令130是MOVPEQ( “如果相等则移动[成对]”)指令,且经融合指令条件132(类似于第一条件116)是“EQ”或“相等”且进一步用于处理条件代码36。如果经融合指令条件132评估为“真”,那么MOVPEQ经融合指令130指示将操作数136指定的“if-true”源值(即,寄存器R2的值)写入到操作数134指定的目标寄存器(即,寄存器札)中的操作。如果经融合指令条件132评估为“假”,那么MOVPEQ经融合指令130指示将操作数138指定的“if-false”值(S卩,寄存器R3的值)写入到操作数134指定的目标寄存器(即,寄存器R1)中的操作。因此,MOVPEQ经融合指令130在单一指令中执行MOVEQ第一有条件写入指令114和MOVNE第二有条件写入指令122两者的操作,因此通过移除冗余有条件写入指令且排除与M0VEQ/M0VNE有条件指令对相关联的写入之后读取危险的可能性而改进CPU性能。
[0048]继续参看图5,上文参考经融合指令130论述的规则的实施在其中从指令流18取得的有条件写入指令的条件反转的实例中说明。与之前一样,出于此实例的目的假定,一或多个先前指令已致使图1的状态寄存器34中的条件代码36指示“相等”或“不相等”条件(即,两个逻辑上相反条件的一者)。检测到的指令流140中首先检测到的是MOVNE第一有条件写入指令142,其评估第一条件144(即,“NE”或“不相等”)且其还指定操作数146指定的目标寄存器R1和操作数148指定的源寄存器R2。检测到的指令流140中跟随在MOVNE第一有条件写入指令142之后的是MOVEQ第二有条件写入指令150。MOVEQ第二有条件写入指令150评估第二条件152 ( “EQ”或“相等”,其是第一条件144的逻辑相反条件)且还指定操作数154指定的目标寄存器R1 (M0VNE第一有条件写入指令142的操作数146指定的相同寄存器)和操作数156指定的源寄存器R3。
[0049]经融合指令158说明由图1的指令处理电路14处理MOVNE第一有条件写入指令142和MOVEQ第二有条件写入指令150的结果。经融合指令158评估经融合指令条件160,且还指定操作数162指定的目标寄存器、操作数164指定的“if-true”源值和操作数166指定的“if-false”源值。在此实例中,如果MOVNE第一有条件写入指令142的操作数148和MOVEQ第二有条件写入指令150的操作数156两者均指定寄存器,那么经融合指令158是MOVPNE ( “如果不相等则移动[成对]”)指令,且MOVNE第一有条件写入指令142的第一条件144( “NE”或“不相等”)用作经融合指令条件160。另外,操作数162指定与操作数146和操作数154相同的目标寄存器R1 ;操作数164指定操作数148指示的源寄存器R2作为“if-true”源值;且操作数166指定操作数156指示的源寄存器R3作为“if-false”源值。
[0050]现返回到图4B的框92处的决策点,如果第一指令和第二指令的源操作数包含非零中间值和零中间值两者,那么在此实例中指令处理电路确定指令中的哪一者指定非零中间值作为源操作数(图4B的框100)。指令处理电路接着选择具有非零中间值源操作数的指令所评估的条件以用作经融合指令条件(图4B的框102)。指令处理电路产生经融合指令,其评估经融合指令条件,且指定目标寄存器Rx、非零中间值和零中间值作为操作数(图4B的框104)。尽管在此实例中未说明,但应理解,在一些实施例中,具有零中间值源操作数的指令评估的条件可选择以用作经融合指令条件,在此情况下指令处理电路将指定目标寄存器Rx、零中间值和非零中间值作为操作数。处理接着在图4C的框98处重新开始,如下文详细论述。
[0051]基于具有零和非零中间值操作数的有条件写入指令产生的示范性经融合指令在图6中参看图1展示。在图6说明的实例中,检测到的指令流168描绘随着其行进穿过图1的指令流18由指令处理电路14检测到的一系列指令。在此实例中,假定一或多个先前指令已致使图1的状态寄存器34中的条件代码36指示“相等”或“不相等”条件(即,两个逻辑上相反条件的一者)。
[0052]检测到的指令流168中首先检测到的是第一有条件写入指令170,其在此实例中为ARM架构M0VEQ( “如果相等则移动”)指令。MOVEQ第一有条件写入指令170通过评估第一条件172(即,“EQ”或“相等”)而处理条件代码36。MOVEQ第一有条件写入指令170还指定操作数174指定的目标寄存器(寄存器16 (O-M)的一者)和操作数176指定的源中间值。此处,目标寄存器是寄存器凡,且操作数176指定的源中间值是中间值#0x1234。如果条件代码36指示条件“相等”,那么MOVEQ第一有条件写入指令170指示将操作数176指定的源中间值#0x1234写入到操作数174指定的目标寄存器R1中的操作。
[0053]在检测到的指令流168中接下来的是第二有条件写入指令178,其为ARM架构MOVNE( “如果不相等则移动”)指令。MOVNE第二有条件写入指令178通过评估第二指令180(“NE”或“不相等”,其是第一条件172的逻辑相反条件)而处理条件代码36。MOVNE第二有条件写入指令178还指定操作数182指定的目标寄存器(其是MOVEQ第一有条件写入指令170的操作数174指定的相同寄存器)和操作数184指定的源中间值。在此实例中,目标寄存器是寄存器R1,且操作数184指定的源中间值是零中间值(#0x0000)。如果条件代码36指示条件“不相等”,那么MOVNE第二有条件写入指令178指示将操作数184指定的源中间值0x#0000写入到操作数182指定的目标寄存器R1中的操作。
[0054]经融合指令186说明由图1的指令处理电路14处理MOVEQ第一有条件写入指令170和MOVNE第二有条件写入指令178的结果。经融合指令186评估经融合指令条件188,且还指定操作数190指定的目标寄存器、操作数192指定的“if-true”源值和操作数194指定的“if-false”源值。如果MOVEQ第一有条件写入指令170的操作数176和MOVNE第二有条件写入指令178的操作数184两者均指定中间值,且如果操作数176和操作数184指定的源中间值的一者非零而另一者为零,那么根据以下规则产生经融合指令186:指定非零中间值的有条件写入指令的条件用作经融合指令条件188(在此实例中,第一条件172用作经融合指令条件188);操作数190指定与操作数174和操作数182相同的目标寄存器;操作数192指定非零源中间值(在此实例中,操作数176指定的源中间值#0x1234)作为“if-true”源值;且操作数194指定零中间值(#0x0000)(由操作数184指定)作为“if-false”源值。尽管此实例中未说明,但应理解,在一些实施例中,第二条件180可选择作为经融合指令条件188,在此情况下操作数192、194指定的值将反转。
[0055]因此,在此实例中,经融合指令186是MOVPEQ (“如果相等则移动[成对]”)指令,且经融合指令条件188 (类似于第一条件172)是“EQ”或“相等”且用于处理条件代码36。如果经融合指令条件188评估为“真”,那么MOVPEQ经融合指令186指示将操作数192指定的“if-true”源值(即,源中间值#0x1234)写入到操作数190指定的目标寄存器(即,寄存器R1)中的操作。如果经融合指令条件188评估为“假”,那么MOVPEQ经融合指令186指示将操作数194指定的“if-false”值(即,源中间值#0x0000)写入到操作数190指定的目标寄存器(即,寄存器R1)中的操作。因此,MOVPEQ经融合指令186在单一指令中执行MOVEQ第一有条件写入指令170和MOVNE第二有条件写入指令178两者的操作,因此通过移除冗余有条件写入指令且排除与M0VEQ/M0VNE有条件指令对相关联的写入之后读取危险的可能性而改进CPU性能。
[0056]继续参看图6,上文参考MOVPEQ经融合指令186论述的规则的实施在其中从图1的指令流18取得的有条件写入指令指定的源中间值反转的实例中说明。在此实例中,与之前一样假定,一或多个先前指令已致使图1的状态寄存器34中的条件代码36指示“相等”或“不相等”条件(即,两个逻辑上相反条件的一者)。检测到的指令流196中首先检测到的是MOVEQ第一有条件写入指令198,其评估第一条件200(即,“EQ”或“相等”)且其还指定操作数202指定的目标寄存器R1和操作数204指定的源中间值#0x0000。检测到的指令流196中跟随在MOVEQ第一有条件写入指令198之后的是MOVNE第二有条件写入指令206。MOVNE第二有条件写入指令206评估第二条件208 (“NE”或“不相等”,其是第一条件200的逻辑相反条件)且还指定操作数210指定的目标寄存器R1 (M0VEQ第一有条件写入指令198的操作数202指定的相同寄存器)和操作数212指定的源中间值#0x1234。
[0057]经融合指令214说明由图1的指令处理电路14处理MOVEQ第一有条件写入指令198和MOVNE第二有条件写入指令206的结果。经融合指令214评估经融合指令条件216,且还指定操作数218指定的目标寄存器、操作数220指定的“if-true”源值和操作数222指定的“if-false”源值。此处,因为MOVEQ第一有条件写入指令198的操作数204指定源中间值零而MOVNE第二有条件写入指令206的操作数212指定非零源中间值,所以经融合指令214是MOVPNE ( “如果不相等则移动[成对]”)指令,且MOVNE第二有条件写入指令206的第二条件208 ( “NE”或“不相等”)用作经融合指令条件216。另外,操作数218指定与操作数202和操作数210相同的目标寄存器R1 ;操作数220指定操作数212指定的源中间值#0x1234作为“if-true”源值;且操作数222指定操作数204指定的源中间值#0x0000作为“if-false”源值。
[0058]返回参看图4B的框92处的决策点,一些实施例可规定具有其它类型的源操作数的检测到的有条件写入指令(例如,一个有条件指令具有寄存器操作数,且第二有条件指令具有零或非零中间值操作数)可融合。在此情况下,指令处理电路选择检测到的有条件指令的一者的条件作为经融合指令条件(图4B的框106)。指令处理电路接着产生经融合指令,其评估经融合指令条件,且指定目标寄存器Rx、包括对应于经融合指令条件的检测到的有条件指令的操作数的“if-true”操作数,和包括评估与经融合指令条件逻辑上相反的条件的检测到的有条件指令的操作数的“if-false”操作数作为操作数(图4B的框108)。处理接着在图4C的框98处重新开始。
[0059]图4C经提供以说明用于用所产生的经融合指令代替指令流中的有条件写入指令的一者的操作。在图4C中,指令处理电路在产生经融合指令之后基于例如图1的指令选择旗标32等指令选择旗标用经融合指令代替指令流中的第一指令或第二指令(图4C的框98)。在一些实施例中,指令选择旗标可指示在指定位置(例如,第一或第二)中从指令流取得的指令始终被代替。指令处理电路接着确定第一还是第二指令在指令流中被经融合指令代替(图4C的框109)。如果第一检测到的指令被经融合指令代替,那么指令处理电路用指示无操作(即,NOP)的指令替代第二指令,或从指令流移除第二指令(图4C的框110)。如果第二检测到的指令被经融合指令代替,那么指令处理电路可任选地用指示无操作(即,Ν0Ρ)的指令替代第一指令,或可从指令流移除第一指令(图4C的框111)。在一些实施例中,第一指令可在指令流中保持不修改,因为后续经融合指令将重复第一指令的功能或执行第二指令的功能。处理接着在图4A的框80处重新开始。
[0060]如上文参看图4C所述,第一指令或第二指令将被所产生的经融合指令代替,且未被代替的指令可被指示无操作(即,Ν0Ρ)的指令代替或完全从指令流移除。因此,指令处理电路可将给定检测到的指令流处理为包含所产生的经融合指令的不同所得指令流。在此方面,图7展示示范性检测到的指令流224,其包含非融合有条件写入指令的集合,以及可由图1的指令处理电路14产生的对应的所得指令流实例226(1)-226(4)。在此实例中,检测到的指令流224包含两个连续ARM指令:M0VEQ第一有条件写入指令在条件代码36指示“相等”条件的情况下有条件地将来自源寄存器R2的值写入到目标寄存器R1,紧接着MOVNE第二有条件写入指令在条件代码36指示“不相等”条件的情况下有条件地将来自源寄存器R3的值写入到目标寄存器R1。
[0061]所得指令流实例226说明检测到的指令流224中的指令可被图1的指令处理电路14处理为的示范性指令序列,包含经融合指令。在一些实施例中,检测到的指令流224中的MOVEQ第一有条件写入指令可被经融合指令代替,且MOVNE第二有条件写入指令可被指示无操作(即,Ν0Ρ)的指令代替。因此,示范性指令流226 (I)包括经融合指令M0VEPEQ,随后是Ν0Ρ。
[0062]一些实施例可规定,检测到的指令流224中的MOVEQ第一有条件写入指令可被NOP指令代替,而MOVNE第二有条件写入指令被经融合指令代替。因此,在指令流226 (2)中,NOP指令之后是经融合指令M0VPEQ。
[0063]根据一些实施例,检测到的指令流224中的MOVEQ第一有条件写入指令可在所得指令流中保持未修改,而MOVNE第二有条件写入指令被经融合指令代替。因此,在指令流226 (3)中,原始MOVEQ第一有条件写入指令之后是经融合指令M0VPEQ。
[0064]在本文描述的一些实施例中,MOVEQ第一有条件写入指令或MOVNE第二有条件写入指令将被所产生的经融合指令代替,且未被代替的指令将完全从指令流移除。因此,指令流226 (4)仅包括经融合指令MOVPEQ。
[0065]如上文参看图4A提及,可用于产生经融合指令的有条件写入指令可从指令流邻近于彼此而取得,或其可在指令流中被其它介入指令分离。相对于后一情境,图8(参看图1)说明非连续有条件写入指令到经融合指令的示范性转换。在图8中,检测到的指令流228描绘随着其行进穿过图1的指令流18指令处理电路14检测到的一系列指令。出于此实例的目的假定,一或多个先前指令已致使图1的状态寄存器34中的条件代码36指示“大于”或“小于或等于”条件(即,两个逻辑上相反条件的一者)。
[0066]检测到的指令流228中首先检测到的是第一有条件写入指令230,其在此实例中为ARM架构MOVGT (“如果大于则移动”)指令。MOVGT第一有条件写入指令230通过评估第一条件232(即,“GT”或“大于”)而处理条件代码36。MOVGT第一有条件写入指令230还指定操作数234指定的目标寄存器(寄存器16 (O-M)的一者)和操作数236指定的源中间值。在此实例中,目标寄存器是寄存器R1,且操作数236指定的源中间值是中间值#0x1234。如果条件代码36指示条件“大于”,那么MOVGT第一有条件写入指令230指示将操作数236指定的源中间值#0x1234写入到操作数234指定的目标寄存器R1中的操作。
[0067]在检测到的指令流228中在MOVGT第一有条件写入指令230之后的是至少一个介入指令238。如上文论述,所述至少一个介入指令238可为任何有效指令,而非更改条件代码36的值或向目标寄存器R1进行写入的指令(图4A的框90)。这些事件的任一者排除产生经融合指令的可能性。举例来说,如果所述至少一个介入指令238修改条件代码36的值,那么稍后取得的有条件写入指令将基于与MOVGT第一有条件写入指令230评估其条件所基于的结果不同的结果评估其条件。类似地,如果所述至少一个介入指令238向目标寄存器R1进行写入,那么可能不可能产生准确再现检测到的有条件写入指令的效应的经融合指令。
[0068]在所述至少一个介入指令238之后,在检测到的指令流228中取得作为ARM架构MOVLE ( “如果小于或等于则移动”)指令的第二有条件写入指令240。MOVLE第二有条件写入指令240通过评估第二条件242( “LE”或“小于或等于”,其是第一条件232的逻辑相反条件)而处理条件代码36。MOVLE第二有条件写入指令240还指定操作数246指定的目标寄存器(其是MOVGT第一有条件写入指令230的操作数234指定的相同寄存器)和操作数248指定的源中间值。在此实例中,目标寄存器是寄存器R1,且操作数248指定的源中间值是零中间值(#0x0000)。如果条件代码36指示条件“小于或等于”,那么MOVLE第二有条件写入指令240指示将操作数248指定的源中间值0x#0000写入到操作数246指定的目标寄存器R1中的操作。
[0069]经融合指令250说明由指令处理电路14处理MOVGT第一有条件写入指令230和MOVLE第二有条件写入指令240的结果。经融合指令250评估经融合指令条件252,且还指定操作数254指定的目标寄存器、操作数256指定的“if-true”源值,和操作数258指定的“if-false”源值。根据用于处理具有非零/零中间值操作数的有条件写入指令的示范性规贝U,如上文参看图6论述,经融合指令250是MOVPGT ( “如果大于则移动[成对]”)指令,且经融合指令条件252 (类似于第一条件232)是“GT”或“大于”且用于处理条件代码36。如果经融合指令条件252评估为“真”,那么MOVPGT经融合指令250指示将操作数256指定的“if-true”源值(即,源中间值#0x1234)写入到操作数254指定的目标寄存器(即,寄存器R1)中的操作。如果经融合指令条件252评估为“假”,那么MOVPGT经融合指令250指示将操作数258指定的“if-false”值(即,源中间值#0x0000)写入到操作数254指定的目标寄存器(即,寄存器R1)中的操作。尽管此实例中未说明,但应理解,在一些实施例中,第二条件242可选择作为经融合指令条件252,在此情况下操作数256、258指定的值将反转。
[0070]根据本文揭示的实施例融合具有相反条件的有条件写入指令的指令处理电路可提供在或并入到任何基于处理器的装置中。实例(无限制)包含机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、桌上型计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电设备、卫星无线电设备、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(DVD)播放器,和便携式数字视频播放器。
[0071]在此方面,图9说明可采用图1中说明的指令处理电路14的基于处理器的系统260的实例。在此实例中,基于处理器的系统260包含一或多个中央处理单兀(CPU) 262,每一者包含一或多个处理器264。处理器264可包括指令处理电路(IPC) 14。CPU 262可具有耦合到处理器264用于对临时所存储数据的快速存取的高速缓冲存储器266。CPU262耦合到系统总线268且可将包含在基于处理器的系统260中的主装置与从装置互相耦合。如众所周知,CPU 262通过经由系统总线268交换地址、控制和数据信息而与这些其它装置通信。举例来说,CPU 262可将总线事务处理请求传送到存储器控制器270 (作为从装置的一实例)。尽管图9中未说明,但可提供多个系统总线268。
[0072]其它主装置和从装置可连接到系统总线268。如图9中说明,这些装置可包含存储器系统272、一或多个输入装置274、一或多个输出装置276、一或多个网络接口装置278,以及一或多个显示控制器280,作为实例。输入装置274可包含任何类型的输入装置,包含(但不限于)输入键、开关、声音处理器等。输出装置276可包含任何类型的输出装置,包含(但不限于)音频、视频、其它视觉指示器等。网络接口装置278可为经配置以允许与网络282之间交换数据的任何装置。网络282可为任何类型的网络,包含(但不限于)有线或无线网络、私人或公共网络、局域网(LAN)、无线局域网(WLAN)和因特网。网络接口装置278可经配置以支持所要的任何类型的通信协议。存储器系统272可包含一或多个存储器单元 284 (O-N)。
[0073]CPU 262还可经配置以经由系统总线268存取显示控制器280以控制发送到一或多个显示器286的信息。显示控制器280将信息发送到显示器286以经由一或多个视频处理器288显示,视频处理器288将待显示的信息处理为适于显示器286的格式。显示器286可包含任何类型的显示器,包含(但不限于)阴极射线管(CRT)、液晶显示器(LCD)、等离子体显示器等。
[0074]所属领域的技术人员将进一步了解,结合本文揭示的实施例描述的各种说明性块、模块、电路和算法可实施为电子硬件、存储在存储器中或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或两者的组合。本文描述的主装置和从装置可在任何电路、硬件组件、集成电路(IC)、IC芯片或半导体裸片中采用(作为实例)。本文揭示的存储器可为任何类型和大小的存储器,且可经配置以存储所要的任何类型的信息。为清楚地说明此可互换性,上文已大体依据其功能性描述各种说明性组件、块、模块、电路和步骤。此功能性如何实施取决于特定应用、设计选择,和/或强加于总体系统的设计约束。熟练的技术人员可针对每一特定应用以各种方式实施所描述的功能性,但此类实施决策不应解释为导致脱离本发明的范围。
[0075]结合本文揭示的实施例描述的各种说明性逻辑块、模块和电路可以处理器、DSP、专用集成电路(ASIC)、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或经设计以执行本文描述的功能的其任何组合实施或执行。处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器的组合、一或多个微处理器与DSP核心结合,或任何其它此类配置。
[0076]本文揭示的实施例可体现在硬件中或存储在硬件中的指令中,且可驻留(例如)在随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可装卸盘、CD-ROM,或此项技术中已知的任何其它形式的计算机可读媒体中。示范性存储媒体耦合到处理器使得处理器可从存储媒体读取信息以及向存储媒体写入信息。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻留在ASIC中。ASIC可驻留在远程站点中。在替代方案中,处理器和存储媒体可作为离散组件驻留在远程站点、基站或服务器中。
[0077]还注意到,本文的示范性实施例的任一者中描述的操作步骤经描述为提供实例和论述。所描述的操作可以除所说明序列外的许多不同序列执行。此外,单一操作步骤中描述的操作可实际上在若干不同步骤中执行。另外,示范性实施例中论述的一或多个操作步骤可组合。应理解,流程图中说明的操作步骤可经受如所属领域的技术人员容易了解的许多不同修改。所属领域的技术人员还将理解,可使用多种不同技术和技艺的任一者表示信息和信号。举例来说,可贯穿以上描述参考的数据指令、命令、信息、信号、位、符号和码片可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合表示。
[0078]提供本发明的先前描述以使所属领域的任何技术人员能够制造或使用本发明。所属领域的技术人员将容易了解对本发明的各种修改,且本文界定的一般原理可应用于其它变型,而不脱离本发明的精神或范围。因此,本发明不希望限于本文描述的实例和设计,而是应被赋予与本文揭示的原理和新颖特征一致的最广范围。
【权利要求】
1.一种指令处理电路,其经配置以: 检测指令流中的第一有条件写入指令,其指示基于评估第一条件将第一值写入到目标寄存器的操作; 检测所述指令流中的第二有条件写入指令,其指示基于评估作为所述第一条件的逻辑相反条件的第二条件将第二值写入到所述目标寄存器的操作; 选择所述第一条件或所述第二条件的一者作为经融合指令条件; 选择所述第一值或所述第二值的对应于所述经融合指令条件的一者作为if-true值;选择所述第一值或所述第二值的不对应于所述经融合指令条件的一者作为if-false值;且 产生经融合指令,其指示在所述经融合指令条件评估为真的情况下选择性地将所述if-true值写入到所述目标寄存器且在所述经融合指令条件评估为假的情况下选择性地将所述if-false值写入到所述目标寄存器的操作。
2.根据权利要求1所述的指令处理电路,其经配置以: 检测所述第一有条件写入指令指示提供所述第一值的第一源寄存器;且 检测所述第二有条件写入指令指示提供所述第二值的第二源寄存器。
3.根据权利要求1所述的指令处理电路,其经配置以: 检测所述第一有条件写入指令指示包括非零的第一中间值的所述第一值;且 检测所述第二有条件写入指令指示包括为零的第二中间值的所述第二值。
4.根据权利要求1所述的指令处理电路,其经配置以: 检测所述第一有条件写入指令指示提供所述第一值的第一源寄存器;且 检测所述第二有条件写入指令指示包括非零的中间值的所述第二值。
5.根据权利要求1所述的指令处理电路,其经配置以: 检测所述第一有条件写入指令指示提供所述第一值的第一源寄存器;且 检测所述第二有条件写入指令指示包括为零的中间值的所述第二值。
6.根据权利要求1所述的指令处理电路,其经配置以检测在所述指令流中邻近于所述第一有条件写入指令定位的所述第二有条件写入指令。
7.根据权利要求1所述的指令处理电路,其进一步经配置以: 检测在所述指令流中在所述第一有条件写入指令与所述第二有条件写入指令之间取得的至少一个介入指令;且 确定所述至少一个介入指令是否将条件代码的值维持在状态寄存器中且不向所述目标寄存器进行与入; 所述指令处理电路经配置以在所述至少一个介入指令维持所述条件代码的所述值且不向所述目标寄存器进行写入的情况下产生所述经融合指令。
8.根据权利要求1所述的指令处理电路,其安置在选自由以下各项组成的群组的电路中:指令取得电路、指令解码电路和指令队列。
9.根据权利要求1所述的指令处理电路,其经配置以检测IF_EQ_WRITE作为所述第一有条件写入指令,且检测IF_NE_WRITE作为所述第二有条件写入指令。
10.根据权利要求1所述的指令处理电路,其进一步经配置以: 基于指令选择旗标选择所述第一有条件写入指令或所述第二有条件写入指令的一者作为选定指令;且 用所述经融合指令代替所述指令流中的所述选定指令。
11.根据权利要求10所述的指令处理电路,其进一步经配置以: 用指示无操作的指令代替不对应于所述选定指令的所述第一有条件写入指令或所述第二有条件写入指令。
12.根据权利要求10所述的指令处理电路,其进一步经配置以: 从所述指令流移除不对应于所述选定指令的所述第一有条件写入指令或所述第二有条件写入指令。
13.根据权利要求1所述的指令处理电路,其集成到半导体裸片中。
14.根据权利要求1所述的指令处理电路,其进一步包括选自由以下各项组成的群组的装置:机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、桌上型计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电设备、卫星无线电设备、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(DVD)播放器,和便携式数字视频播放器。
15.一种指令处理电路,其包括: 用于检测指令流中的第一有条件写入指令的装置,所述第一有条件写入指令指示基于评估第一条件将第一值写入到目标寄存器的操作; 用于检测所述指令流中的第二有条件写入指令的装置,所述第二有条件写入指令指示基于评估作为所述第一条件的逻辑相反条件的第二条件将第二值写入到所述目标寄存器的操作; 用于选择所述第一条件或所述第二条件的一者作为经融合指令条件的装置; 用于选择所述第一值或所述第二值的对应于所述经融合指令条件的一者作为if-true值的装置; 用于选择所述第一值或所述第二值的不对应于所述经融合指令条件的一者作为if-false值的装置;以及 用于产生经融合指令的装置,所述经融合指令指示在所述经融合指令条件评估为真的情况下选择性地将所述if-true值写入到所述目标寄存器且在所述经融合指令条件评估为假的情况下选择性地将所述if-false值写入到所述目标寄存器的操作。
16.一种用于处理计算机指令的方法,其包括: 检测指令流中的第一有条件写入指令,其指示基于评估第一条件将第一值写入到目标寄存器的操作; 检测所述指令流中的第二有条件写入指令,其指示基于评估作为所述第一条件的逻辑相反条件的第二条件将第二值写入到所述目标寄存器的操作; 选择所述第一条件或所述第二条件的一者作为经融合指令条件; 选择所述第一值或所述第二值的对应于所述经融合指令条件的一者作为if-true值;选择所述第一值或所述第二值的不对应于所述经融合指令条件的一者作为if-false值;以及 产生经融合指令,其指示在所述经融合指令条件评估为真的情况下选择性地将所述if-true值写入到所述目标寄存器且在所述经融合指令条件评估为假的情况下选择性地将所述if-false值写入到所述目标寄存器的操作。
17.根据权利要求16所述的方法,其包括: 检测所述第一有条件写入指令指示提供所述第一值的第一源寄存器;以及 检测所述第二有条件写入指令指示提供所述第二值的第二源寄存器。
18.根据权利要求16所述的方法,其包括: 检测所述第一有条件写入指令指示包括非零的第一中间值的所述第一值;以及 检测所述第二有条件写入指令指示包括为零的第二中间值的所述第二值。
19.根据权利要求16所述的方法,其包括: 检测所述第一有条件写入指令指示提供所述第一值的第一源寄存器;以及 检测所述第二有条件写入指令指示包括非零的中间值的所述第二值。
20.根据权利要求16所述的方法,其包括: 检测所述第一有条件写入指令指示提供所述第一值的第一源寄存器;以及 检测所述第二有条件写入指令指示包括为零的中间值的所述第二值。
21.一种非暂时性计算机可读媒体,其上存储有计算机可执行指令以致使处理器实施包括以下步骤的方法: 检测指令流中的第一有条件写入指令,其指示基于评估第一条件将第一值写入到目标寄存器的操作; 检测所述指令流中的第二有条件写入指令,其指示基于评估作为所述第一条件的逻辑相反条件的第二条件将第二值写入到所述目标寄存器的操作; 选择所述第一条件或所述第二条件的一者作为经融合指令条件; 选择所述第一值或所述第二值的对应于所述经融合指令条件的一者作为if-true值;选择所述第一值或所述第二值的不对应于所述经融合指令条件的一者作为if-false值;以及 产生经融合指令,其指示在所述经融合指令条件评估为真的情况下选择性地将所述if-true值写入到所述目标寄存器且在所述经融合指令条件评估为假的情况下选择性地将所述if-false值写入到所述目标寄存器的操作。
22.根据权利要求21所述的非暂时性计算机可读媒体,其上存储有所述计算机可执行指令以致使所述处理器实施包括以下步骤的所述方法: 检测所述第一有条件写入指令指示提供所述第一值的第一源寄存器;以及 检测所述第二有条件写入指令指示提供所述第二值的第二源寄存器。
23.根据权利要求21所述的非暂时性计算机可读媒体,其上存储有所述计算机可执行指令以致使所述处理器实施包括以下步骤的所述方法: 检测所述第一有条件写入指令指示包括非零的第一中间值的所述第一值;以及 检测所述第二有条件写入指令指示包括为零的第二中间值的所述第二值。
24.根据权利要求21所述的非暂时性计算机可读媒体,其上存储有所述计算机可执行指令以致使所述处理器实施包括以下步骤的所述方法: 检测所述第一有条件写入指令指示提供所述第一值的第一源寄存器;以及 检测所述第二有条件写入指令指示包括非零的中间值的所述第二值。
25.根据权利要求21所述的非暂时性计算机可读媒体,其上存储有所述计算机可执行指令以致使所述处理器实施包括以下步骤的所述方法: 检测所述第一有条件写入指令指示提供所述第一值的第一源寄存器;以及 检测所述第二有条件写入指令指示包括为零的中间值的所述第二值。
【文档编号】G06F9/30GK104272252SQ201380023558
【公开日】2015年1月7日 申请日期:2013年5月16日 优先权日:2012年5月16日
【发明者】梅林达·J·布朗, 詹姆斯·诺里斯·迪芬德尔费尔, 迈克尔·斯科特·麦克勒瓦伊内, 布莱恩·迈克尔·斯坦普尔, 罗德尼·韦恩·史密斯, 杰弗里·M·斯科特米勒, 安德鲁·S·欧文, 迈克尔·威廉·莫罗 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1