一种DSP处理器及其循环跳转指令的处理方法与流程

文档序号:28535460发布日期:2022-01-19 13:56阅读:276来源:国知局
一种DSP处理器及其循环跳转指令的处理方法与流程
一种dsp处理器及其循环跳转指令的处理方法
技术领域
1.本发明涉及指令处理技术领域,具体涉及一种dsp处理器及其循环跳转指令的处理方法。


背景技术:

2.现有技术中,要执行循环跳转指令一般需要3个流水线周期,以c语言的for循环为例,如果要实现(i=0;i《=0x1f;i++)循环,汇编程序一般需要编写三条指令来实现,如:
[0003][0004]
其中,在上述三条指令中,第一条指令i1用于判断寄存器r31中的变量的数值是否等于0x1f,并把比较结果存到状态寄存器中,第二条指令i2执行r31寄存器的递增,第三条指令i3根据标志状态寄存器来决定是否执行分支跳转。由此可见,现有技术中,要执行一条for指令,需要3个流水线周期。上述方法为了实现for指令,程序员需要编写3条指令,占用指令空间,在有限的指令空间的情况下使得处理器能实现的功能减少。此外,由于需要3个流水线周期,使得处理器的处理速度变慢,导致处理器效率变低。


技术实现要素:

[0005]
本发明所要解决的技术问题在于,提供一种dsp处理器及其循环跳转指令的处理方法,以解决现有技术中执行一条循环跳转指令需要三个流水线周期而导致处理器效率低的问题。
[0006]
为解决上述技术问题,本发明一方面提供一种dsp处理器的循环跳转指令的处理方法,包括:
[0007]
在一流水线周期的取指阶段读取所述循环跳转指令汇编程序,其中所述循环跳转指令汇编程序包括用于存放所述循环跳转指令变量的寄存器地址、循环跳转阈值、变量处理标签以及跳转目标地址,所述流水线周期至少包括取指阶段、解码阶段、执行阶段;
[0008]
在解码阶段,对读取的所述循环跳转指令进行解码,获得解码后的循环跳转指令信息;
[0009]
在执行阶段,根据所述解码后的循环跳转指令信息执行跳转操作或按照所述变量处理标签对所述变量的当前值执行对应的操作,若按照所述变量标签对所述变量的当前值执行对应的操作,将操作后的变量值与所述跳转阈值进行比较,判断是否满足跳转条件。
[0010]
在一具体实施方式中,所述对读取的所述循环跳转指令进行解码,获得解码后的循环跳转指令信息具体包括:
[0011]
对所述循环跳转指令汇编程序进行解码,获得所述寄存器地址、循环跳转阈值、跳转目标地址以及变量处理标签;
[0012]
读取所述寄存器中所述变量的当前值。
[0013]
在一具体实施方式中,所述根据所述解码后的循环跳转指令信息执行跳转操作或按照所述变量处理标签对所述变量的当前值执行对应的操作,若按照所述变量标签对所述变量的当前值执行对应的操作,将操作后的变量值与所述跳转阈值进行比较,判断是否满足跳转条件具体包括:
[0014]
将所述变量的当前值与所述跳转阈值进行比较,判断是否满足跳转条件,若满足跳转条件,则将指令执行地址跳转至所述跳转目标地址,否则确定所述变量处理标签对应的操作,若为加一操作,则将所述变量的当前值加一,并将加一后的值与所述跳转阈值进行比较,判断是否满足跳转条件,若为减一操作,则将所述变量的当前值减一,并将减一后的值与所述跳转阈值进行比较,判断是否满足跳转条件。
[0015]
在一具体实施方式中,所述方法还包括:
[0016]
在所述一流水线周期的其后连续设定个流水线周期的取指阶段读取的指令均为nop指令。
[0017]
本发明第二方面提供一种dsp处理器的循环跳转指令的处理方法,所述方法包括:
[0018]
在一流水线周期的取指阶段读取所述循环跳转指令汇编程序,对读取的所述循环跳转指令汇编程序进行解码,获得解码后的循环跳转指令信息,从所述专用寄存器中读取所述变量的当前值,并将所述当前值与所述跳转阈值进行比较,其中所述循环跳转指令汇编程序包括用于存放所述循环跳转指令变量的专用寄存器地址、循环跳转阈值、变量处理标签以及跳转目标地址,所述流水线周期至少包括取指阶段、解码阶段;
[0019]
在所述解码阶段,判断是否满足跳转条件,若满足跳转条件,则将指令执行地址跳转至所述跳转目标地址,否则确定所述变量处理标签对应的操作,若为加一操作,则将所述变量的当前值加一,并将加一后的值与所述跳转阈值进行比较,判断是否满足跳转条件,若为减一操作,则将所述变量的当前值减一,并将减一后的值与所述跳转阈值进行比较,判断是否满足跳转条件。
[0020]
本发明第三方面提供一种dsp处理器,包括:
[0021]
取指单元,用于在一流水线周期的取指阶段读取所述循环跳转指令信息,其中所述循环跳转指令信息具体包括用于存放所述循环跳转指令变量的寄存器地址、循环跳转阈值以及跳转目标地址,所述流水线周期至少包括取指阶段、解码阶段、执行阶段;
[0022]
解码单元,用于在解码阶段,对读取的所述循环跳转指令进行解码,获得解码后的循环跳转指令信息;
[0023]
执行单元,用于根据所述解码后的循环跳转指令信息执行跳转操作或按照所述变量处理标签对所述变量的当前值执行对应的操作,若按照所述变量标签对所述变量的当前值执行对应的操作,将操作后的变量值与所述跳转阈值进行比较,判断是否满足跳转条件;
[0024]
寄存器,用于存储所述循环跳转指令的变量。
[0025]
在一具体实施方式中,所述解码单元具体用于:
[0026]
对所述循环跳转指令汇编程序进行解码,获得所述寄存器地址、循环跳转阈值、跳转目标地址以及变量处理标签;
[0027]
读取所述寄存器中所述变量的当前值。
[0028]
在一具体实施方式中,所述执行单元具体用于:
[0029]
将所述变量的当前值与所述跳转阈值进行比较,判断是否满足跳转条件,若满足跳转条件,则将指令执行地址跳转至所述跳转目标地址,否则确定所述变量处理标签对应的操作,若为加一操作,则将所述变量的当前值加一,并将加一后的值与所述跳转阈值进行比较,判断是否满足跳转条件,若为减一操作,则将所述变量的当前值减一,并将减一后的值与所述跳转阈值进行比较,判断是否满足跳转条件。
[0030]
在一具体实施方式中,所述取指单元还用于在所述一流水线周期的其后连续设定个流水线周期的取指阶段读取的指令均为nop指令。
[0031]
在一具体实施方式中,所述寄存器为专用寄存器。
[0032]
实施本发明实施例,具有如下的有益效果:通过在一流水线周期的取指阶段读取循环跳转指令的用于存放所述循环跳转指令变量的寄存器地址、循环跳转阈值以及跳转目标地址,然后对读取的循环跳转指令进行解码并执行循环跳转指令。采用该方法,程序员只需要编写一条指令即可实现循环跳转,减少了对指令存储空间的需求,使得在有限的指令存储空间中dsp处理器能够实现更多的功能,此外,由于该方法的循环跳转指令只需要在一个流水线周期中执行完毕,使得dsp处理器的处理速度增快,提高了dsp处理器的处理效率。
附图说明
[0033]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,根据这些附图获得其他的附图仍属于本发明的范畴。
[0034]
图1示出了本发明实施例一的一种dsp处理器的循环跳转指令的处理方法的流程示意图;
[0035]
图2示出了本发明实施例一的一种dsp处理器的循环跳转指令的处理方法的流水线示意图;
[0036]
图3示出了本发明实施例一的一种dsp处理器的循环跳转指令的处理方法的流程示意图;
[0037]
图4示出了本发明实施例二的一种dsp处理器的循环跳转指令的处理方法的流程示意图;
[0038]
图5示出了本发明实施例二的一种dsp处理器的循环跳转指令的处理方法的示意图;
[0039]
图6示出了本发明实施例三的一种dsp处理器的结构示意图。
具体实施方式
[0040]
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
[0041]
如图1所示,本发明实施例一提供一种dsp处理器的循环跳转指令的处理方法,包括如下步骤:
[0042]
s11、在一流水线周期的取指阶段读取所述循环跳转指令汇编程序,其中所述循环跳转指令汇编程序包括用于存放所述循环跳转指令变量的寄存器地址、循环跳转阈值、变
量处理标签以及跳转目标地址,所述流水线周期至少包括取指阶段、解码阶段、执行阶段。
[0043]
其中,一流水线周期至少包括取指阶段、解码阶段、执行阶段,还可以包括回写阶段,执行阶段包括第一执行阶段和第二执行阶段。如图2所示,示出了四级流水线周期的示意图。
[0044]
其中,该循环跳转指令的汇编程序为:for rx,#immed,tag,deal。其中,rx为用于存放变量i的寄存器,#immed为跳转阈值,tag为跳转目标地址,deal为变量处理标签,表示对变量执行的操作,例如,若deal为1,表示对变量i执行加1操作,即i++,若deal为0,表示对变量i执行减1操作,即i
‑‑
。结合c语言程序中的for(i=x;i《=y;i++)程序来说明上述循环跳转指令的汇编程序。汇编程序for指令中的rx表示c程序中的“i”;rx的初始值,表示“x”;立即数“#immed”,表示“y”。
[0045]
s12、在解码阶段,对读取的所述循环跳转指令进行解码,获得解码后的循环跳转指令信息。
[0046]
对所述循环跳转指令汇编程序进行解码,获得所述寄存器地址、循环跳转阈值、跳转目标地址以及变量处理标签,读取所述寄存器中所述变量的当前值。
[0047]
s13、在执行阶段,根据所述解码后的循环跳转指令信息执行跳转操作或按照所述变量处理标签对所述变量的当前值执行对应的操作,若按照所述变量标签对所述变量的当前值执行对应的操作,将操作后的变量值与所述跳转阈值进行比较,判断是否满足跳转条件。
[0048]
将变量的当前值与跳转阈值进行比较,若满足跳转条件,则跳转到对应的目标跳转地址,否则,确定变量处理标签对应的操作,若对应的操作为i++,则将变量的当前值加一,并将变量的当前值加一后的值与跳转阈值进行比较,判断是否满足跳转条件,如果满足,则跳转到对应的目标跳转地址,否则继续加一,若对应的操作为i
‑‑
,则将变量的值减一,并将变量的当前值减一后的值与跳转阈值进行比较,判断是否满足跳转条件,如果满足,则跳转到对应的目标跳转地址,否则继续减一。
[0049]
本发明实施例一的一种循环跳转指令的处理方法,通过在一流水线周期的取指阶段读取循环跳转指令的用于存放所述循环跳转指令变量的寄存器地址、循环跳转阈值、变量处理标签以及跳转目标地址,然后对读取的循环跳转指令进行解码并执行循环跳转指令。采用该方法,程序员只需要编写一条指令即可实现循环跳转,减少了对指令存储空间的需求,使得在有限的指令存储空间中dsp处理器能够实现更多的功能,此外,由于该方法的循环跳转指令只需要在一个流水线周期中执行完毕,使得dsp处理器的处理速度增快,提高了dsp处理器的处理效率。
[0050]
所述方法还包括:在所述一流水线周期的其后连续设定个流水线周期的取指阶段读取的指令均为nop指令。
[0051]
表1指令执行过程
[0052]
[0053]
如表1所示,一共包括依次执行的四条循环跳转指令i1、i2、i3和i4,其中,i1为上述的循环跳转指令,在for循环跳转指令的流水线周期执行到执行2时(即分支跳转时),会存在三个延时槽(即指令i2、i3、i4已加载到流水线上)。为了减少汇编程序员或者c编译器的工作量时,将循环跳转指令i1后的连续设定条指令设置为nop指令。优选地,将循环跳转指令后的i2指令、i3指令以及i4指令设置为空指令。
[0054]
本发明实施例二提供一种dsp处理器的循环跳转指令的处理方法,如图4-5所示,该方法包括:
[0055]
s21、在一流水线周期的取指阶段读取所述循环跳转指令汇编程序,对读取的所述循环跳转指令汇编程序进行解码,获得解码后的循环跳转指令信息,从所述专用寄存器中读取所述变量的当前值,并将所述当前值与所述跳转阈值进行比较,其中所述循环跳转指令汇编程序包括用于存放所述循环跳转指令变量的专用寄存器地址、循环跳转阈值、变量处理标签以及跳转目标地址,所述流水线周期至少包括取指阶段、解码阶段。
[0056]
优选地,采用4个专用寄存器来存储循环跳转指令中的变量,4个专用寄存器均采用硬连线方式连接,以避免读取通用寄存器时存在多级选择器所带来的时序问题。
[0057]
s22、将所述变量的当前值与所述跳转阈值进行比较,判断是否满足跳转条件,若满足跳转条件,则将指令执行地址跳转至所述跳转目标地址,否则确定所述变量处理标签对应的操作,若为加一操作,则将所述变量的当前值加一,并将加一后的值与所述跳转阈值进行比较,判断是否满足跳转条件,若为减一操作,则将所述变量的当前值减一,并将减一后的值与所述跳转阈值进行比较,判断是否满足跳转条件。
[0058]
本发明实施例的循环跳转指令的处理方法,采用专用寄存器来存储循环跳转指令,程序员只需要编写一条指令即可实现循环跳转,减少了对指令存储空间的需求,进而在有限的指令存储空间中dsp处理器能够实现更多的功能,还由于该方法的循环跳转指令只需要在一个流水线周期中执行完毕,使得dsp处理器的处理速度增快,提高了dsp处理器的处理效率,此外,在解码阶段,如果发生循环跳转指令的跳转,则可以将跳转目标地址加载在取指地址中,这样跳转指令在跳转后就不再需要延时槽了,更进一步提高了处理器的效率。
[0059]
基于本发明实施例一,本发明实施例三提供一种dsp处理器,如图6所示,该dsp处理器10包括取指单元1、解码单元2、执行单元3,其中,取指单元1用于在一流水线周期的取指阶段读取所述循环跳转指令汇编程序,其中所述循环跳转指令汇编程序包括用于存放所述循环跳转指令变量的寄存器地址、循环跳转阈值、变量处理标签以及跳转目标地址,所述流水线周期至少包括取指阶段、解码阶段、执行阶段;解码单元2用于对读取的所述循环跳转指令进行解码,获得解码后的循环跳转指令信息;执行单元3用于根据所述解码后的循环跳转指令信息执行跳转操作或按照所述变量处理标签对所述变量的当前值执行对应的操作,并将操作后的变量值与所述跳转阈值进行比较,判断是否满足跳转条件。
[0060]
其中,所述解码单元2具体用于对所述读取的所述循环跳转指令进行解码,获得解码后的循环跳转指令信息,读取所述寄存器中所述变量的当前值。
[0061]
其中,所述执行单元3具体用于将所述变量的当前值与所述跳转阈值进行比较,判断是否满足跳转条件,若满足跳转条件,则指令执行地址跳转至所述跳转目标地址,否则按照所述变量处理标签对所述变量的当前值执行对应的操作,并将操作后的变量值与所述跳
转阈值进行比较,判断是否满足跳转条件。
[0062]
其中,所述取指单元还用于在所述一流水线周期的其后连续设定个流水线周期的取指阶段读取的指令均为nop指令。
[0063]
其中,所述寄存器为专用寄存器。
[0064]
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1