指令译码器(14)响应于条件式比较指令以生成用以控制处理电路(4)的控制信号以执行条件式比较运算。条件式比较运算包括:(i)如果处理电路(4)的当前条件状态通过测试条件,则对第一操作数和第二操作数执行比较运算,并且,设定当前条件状态为在比较运算期间生成的结果条件状态;以及(ii)如果当前条件状态未通过测试条件,则设定当前条件状态为由条件式比较指令指定的未通过条件状态。条件式比较指令可用以表示比较运算的序列链,其中每个单个比较运算可测试一对操作数之间的不同种类的关系。
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术相关于数据处理领域。更特定而言,本专利技术相关于条件式比较指令。
技术介绍
已知可提供具有用以代表处理装置的当前条件状态的各种条件标志(flag)的处理装置。此种数据处理装置的示例为由设立在英国剑桥的ARM Limited所设计的执行ARM指令集的处理器。指令可经安排以条件式地执行,以使条件标志的当前状态在条件式指令执行时,控制是否要执行条件式运算。例如,对于一种条件式指令类型,在执行时测试当前条件状态,并且,如果当前条件状态通过测试,则根据对两操作数所执行的运算结果更新条件标志。如果当前条件状态未通过测试,则指令作为不具功能的NOP指令,因此不改变条件 O此种指令可用以实施一些测试与对测试结果的逻辑运算的组合。例如,可使用指令序列来估算(evaluate)逻辑表达式(A = = B&&C = = D) | | E = = F,此逻辑表达式包括初始测试A== B及随后更进一步的测试链,并使用AND(&&)或0R(| I)运算将其每一个的结果与自先前运算生成的条件标志结合,指令序列包括无条件式比较指令与一或多个条件式比较指令,每一个条件式比较指令被安排以仅在先前指令的结果满足特定条件时更新条件标志。例如,表达式(A = = B&&C = =D) IlE==F可由以下指令序列估算出CMP A, BCMPEQ C,DCMPNE E, F无条件式比较指令CMP A,B比较A和B的值,并且,根据比较结果设定条件标志。如果A和B相等,则条件标志被置于EQ状态,同时如果A和B不相等,则条件标志被置于NE状态。在执行条件式比较指令CMPEQ C,D时,如果条件标志为在EQ状态中(亦即,测试A = = B满足),则执行C和D的间的比较,并且,根据比较结果更新条件标志。另外,在条件标志为在NE状态中时(亦即,测试A==B未满足),则CMPEQ指令作为NOP并且,不改变条件标志。此意味着在执彳了首两个指令的后,条件标志将仅在A = B和C = D时指不EQ状态,并将在其他情况指示NE状态。此为使用AND运算结合A==B和C==D测试的正确结果。接着,执行条件式比较指令CMPNE E,F,并且,如果条件标志为在EQ状态中(亦即,测试A== B&&C == D满足),则CMPNE指令将被当作Ν0Ρ,并且,因此条件代码将保持在EQ状态中。另外,如果条件标志为在NE状态中(亦即,测试A == B&&C == D未满足),则执行E和F的比较,并且,根据比较结果更新条件标志。因此,如果(A = B AND C = D)或E = F,最终结果将为EQ,并且,当这些测试都未满足时最终结果将为NE。此为使用OR运算结合(A = = B&&C = = D)和E = = F测试的正确结果。因此,条件式比较指令CMPEQ和CMPNE可用以估算为(A = = B&&C = = D) | | E ==F的形式的测试链。然而,仅可当链内所有的个别测试估算相同种类关时,或在估算可被转换成相同种类关的不同种类关时使用这些种类的指令。例如,在先前示例中,所有个别测试估算”相等”关系。或者,条件式指令可用以代表为(A>B&&C<D)的形式的逻辑条件,因为关系C <D可被转换成D > C,其与A>B为相同种类关系。然而,不可能测试诸如(例如)(A > B I C== D)&&E < = F或A = = B&&C ! = D的逻辑表达式,因为被测试的关系不同,并且,无法彼此转换。因此,这些条件式指令仅可用于测试特定种类的逻辑表达式。此意味着使用此等指令所能编译的原始码数量被限制,并且,对编译程序而言,确定条件式指令是否可用于特定应用是复杂的。
技术实现思路
本专利技术的第一方面提供一种数据处理装置,包括处理电路,其用于处理数据;指令译码器,其响应于程序指令以生成用于控制所述处理电路以处理所述数据的控制信号;状态存储器,其用于存储所述处理电路的当前条件状态,所述当前条件状态在处理所述数据期间为可修改的;其中所述等程序指令包括条件式比较指令,并且,所述指令译码器响应于所述条件式比较指令以生成用于控制所述处理电路以执行条件式比较运算的控制信号,所述条件式比较运算包括(i)如果所述当前条件状态通过测试条件,则对第一操作数和第二操作数执行比较运算,并设定所述当前条件状态为在所述比较运算期间生成的结果条件状态;以及(ii)如果所述当前条件状态未通过所述测试条件,则设定所述当前条件状态为由所述条件式比较指令指定的未通过条件状态。·本技术提供条件式比较指令,其控制处理电路以确定处理电路的当前条件状态是否通过测试条件。独立于当前条件状态通过或未通过测试条件,当前条件状态被更新。新的当前条件状态值由不同方式确定,取决于当前条件状态通过或未通过测试条件。如果当前条件状态通过测试条件,则对第一操作数和第二操作数执行比较运算,并且,当前条件状态被设定为在比较运算期间生成的结果条件状态。另一方面,如果当前条件状态未通过测试条件,则当前条件状态被设定为由所述条件式比较指令指定的未通过条件状态。能够指定特定未通过条件状态值(其在当前条件状态未通过测试条件时取代当前条件状态)的能力,使条件式比较指令能够用以测试不同类型的比较序列链。这是因为,对于对应于链中的一个比较的条件式比较指令,未通过条件状态可用以建立所需测试链中的下一个比较的特定条件状态。因此可使用条件式比较指令,即使序列链中的关系无法被转换成相同种类关系。例如,可测试为((S == T&&U >= O) I |A ! = B)&&C > D的形式的序列,即使被测试的个别关系= =、> =、!=、>不同,并且,无法彼此转换。此意味着可更广泛的使用条件式比较指令,相较于先前已知的条件式比较指令,并且,因此可更容易的由编译程序使用。状态存储器可为任意种类的用于存储当前条件状态的存储位置。在示例性具体实施例中,状态存储器可包括状态寄存器。装置的当前条件状态可包括存储在状态存储器中的至少一个条件代码标志的值。例如,可提供条件代码标志以指示先前比较生成了负值、零值、进位、或是溢位。较后的比较随后可依据条件标志值被制成为条件式,以使较后比较的结果亦取决于较早的比较。此使较早的比较和较后的比较能够被链结在一起以形成结合的逻辑条件。条件式比较指令可包括用于指定测试条件的字段。可由包括条件式比较指令的程序的程序设计师直接指定测试条件,或在条件式比较指令为代表所需逻辑表达式的程序指令序列的一部分时,可由编译程序自动地生成测试条件。可由条件比较指令指定未通过条件状态为立即值(immediate value)。因此,立即值指示在条件式比较指令执行的时的当前条件状态未通过测试条件时,当前条件状态将被设定至的值。 代表未通过条件状态的立即值,可为由包括条件式比较指令的程序的程序设计师设定的可编程值。此使程序设计师能够直接控制未通过条件状态。另外,代表未通过条件状态的立即值,也可为由包括条件式比较指令的程序本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】...
【专利技术属性】
技术研发人员:戴维·詹姆斯·西尔,西蒙·约翰·克拉斯克,
申请(专利权)人:ARM有限公司,
类型:
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。