一种处理器及其处理任务的方法_2

文档序号:9579032阅读:来源:国知局
是为本发明实施例的标量核处理任务的流程示意图;
[0042]图10为本发明实施例的矢量核处理任务的流程示意图;
[0043]图11为本发明实施例的写PBUF操作的流程示意图;
[0044]图12是双核DSP简单的微码示例示意图以及单核执行相同任务对应的程序代码示意图;
[0045]图13为本发明另一实施例的处理器的结构框图;
[0046]图14为本发明另一实施例的处理器并行和同步示意图;
[0047]图15为本发明另一实施例的处理器处理任务的方法的流程示意图;
[0048]图16为本发明另一实施例的标量核处理任务的流程示意图;
[0049]图17为本发明是另一实施例的矢量核处理任务的流程示意图。
【具体实施方式】
[0050]为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。
[0051]为了便于理解本发明实施例的技术方案,本发明实施例中将标量计算模块也称为标量核,将矢量计算模块也称为矢量核。本发明实施例中的第一指令尤指标量核的fork指令,第二指令尤指标量核的sync指令,第三指令尤指矢量核的sync指令。
[0052]图2为本发明实施例的处理器并行和同步示意图。如图2所示,每个任务分为标量处理部分和矢量处理部分(如任务1分为标量处理部分S1和矢量处理部分VI)。如果是单核执行的话,必须先执行标量处理部分,再执行矢量处理部分,执行效率较低。将标量处理部分和矢量处理部分分别交由标量核和矢量核处理,再配以严格的双核同步机制加以保障,可以实现标量处理和矢量处理同时进行,完成任务的时间明显缩短。图中标量核执行完标量处理S1之后执行fork指令,fork指令的目的是通知矢量核参数已准备完毕,矢量核可以开始执行矢量运算。此外,fork指令还指定了调用矢量核子程序的地址。只要PBUF未满,标量核就可以继续执行下一个任务的标量处理S2,然后再执行sync指令。sync指令的作用也是通知矢量核可以开始执行矢量运算,但它和fork指令的区别是不带有矢量核子程序地址,意思是矢量核要顺序执行程序而不是另外从新的子程序起始地址开始运行。矢量核被触发后开始从子程序起始地址运行,执行完矢量处理VI后再执行sync指令。矢量核sync指令的作用是指示当前任务的矢量处理已经完成,需要下一个任务的参数传递过来进行下一任务的计算。当从PBUF读到下一任务参数计算完成标志时,即与S2对应的标量核sync指令,则将全部被修改的shadow寄存器值在一个周期内拷贝到对应的work寄存器,然后开始执行矢量处理V2。后续任务也是按照前面所述方式进行处理的。
[0053]图3为本发明实施例一的处理器处理任务的方法的流程示意图,如图3所示,所述处理器处理任务的方法包括以下步骤:
[0054]步骤301:标量计算模块执行当前任务的参数计算,并将计算得到的参数存储至PBUF中;当所述当前任务的参数计算完成后,执行用于核间同步的第一指令或第二指令,并将所述第一指令或第二指令存储至所述PBUF中。
[0055]本发明实施例中,所述方法还包括:
[0056]所述标量计算模块将所述第一指令或第二指令存储至所述PBUF中之后,继续计算下一个任务的参数。
[0057]步骤302:矢量计算模块从所述PBUF中读取参数,并将读取到的参数存储至shadow寄存器中;当从所述PBUF中读取到所述第一指令或第二指令时,在一个周期内将所述shadow寄存器中所有被修改的参数存储至work寄存器中。
[0058]本发明实施例中,所述当从所述PBUF中读取到所述第一指令或第二指令时,在一个周期内将所述shadow寄存器中所有被修改的参数存储至工作work寄存器中,包括:
[0059]当从所述PBUF中读取到所述第一指令或第二指令时,且所述矢量计算模块处于空闲状态或执行第三指令时,在一个周期内将所述shadow寄存器中所有被修改的参数存储至work寄存器中。
[0060]本发明实施例中,所述标量计算模块执行的第一指令用于通知所述矢量计算模块所述当前任务的参数计算完成;
[0061]所述第一指令携有指示调用矢量计算模块子程序的地址的指示信息。
[0062]所述标量计算模块执行的第二指令用于通知所述矢量计算模块所述当前任务的参数计算完成;
[0063]所述第二指令用于指示所述矢量计算模块按照预设顺序执行程序。
[0064]这里,预设顺序是指令在程序存储器中的排放顺序。
[0065]步骤303:矢量计算模块根据所述work寄存器中的参数执行当前任务的矢量计笪并ο
[0066]本发明实施例中,所述方法还包括:
[0067]矢量计算模块执行当前任务的矢量计算完成后,执行第三指令,所述第三指令用于更新下一个任务的参数。
[0068]图4为本发明实施例的处理器的结构组成示意图,如图4所示,所述处理器包括:标量计算模块41、矢量计算模块42、PBUF43,所述矢量计算模块包括shadow寄存器44、work寄存器45 ;
[0069]所述标量计算模块41,用于执行当前任务的参数计算,并将计算得到的参数存储至所述PBUF43中;当所述当前任务的参数计算完成后,执行用于核间同步的第一指令或第二指令,并将所述第一指令或第二指令存储至所述PBUF43中;
[0070]所述shadow寄存器45,用于从所述PBUF43中读取参数,并存储读取到的参数;
[0071]所述work寄存器45,用于当从所述PBUF43中读取到所述第一指令或第二指令时,在一个周期内存储所述shadow寄存器44中所有被修改的参数;
[0072]所述矢量计算模块42,用于根据所述work寄存器45中的参数执行当前任务的矢量计算。
[0073]所述work寄存器45,还用于当从所述PBUF43中读取到所述第一指令或第二指令时,且所述矢量计算模块处于空闲状态或执行第三指令时,在一个周期内存储所述shadow寄存器44中所有被修改的参数。
[0074]所述矢量计算模块42,还用于执行所述当前任务的矢量计算完成后,执行第三指令,所述第三指令用于更新下一个任务的参数。
[0075]所述标量计算模41块执行的第一指令用于通知所述矢量计算模块所述当前任务的参数计算完成;
[0076]所述第一指令携有指示调用矢量计算模块子程序的地址的指示信息。
[0077]所述标量计算模块41执行的第二指令用于通知所述矢量计算模块所述当前任务的参数计算完成;
[0078]所述第二指令用于指示所述矢量计算模块按照预设顺序执行程序。
[0079]所述标量计算模块41,还用于将所述第一指令或第二指令存储至所述PBUF中之后,继续计算下一个任务的参数。
[0080]结合具体实际应用中的功能模块,本发明实施例还提供了一种处理器,如图5所示,图5为本发明实施例的处理器的结构框图。
[0081]本发明实施例的处理器包括以下模块:标量程序存储器(SPM,Scalar ProgramMemory) 51、矢量程序存储器(VPM,Vector Program Memory) 52、数据存储器(DM,DataMemory) 53、直接存储器存取(DMA,Direct Memory Access) 54;
[0082]所述处理器还包括:标量核(SCORE,Scalar Core)55、矢量核(VC0RE,VectorCore)56、参数缓冲器(PBUF,Parameter Buffer)57,其中SC0RE55中含有参数寄存器,VC0RE56中含有shadow寄存器和work寄存器。
[0083]上述模块中,SPM51和VPM52分别是标量核和矢量核的程序存储器,标量核和矢量核共享数据存储器DM53。DMA54负责程序和数据搬运。两个核通过参数缓冲器PBUF57进行核间通信。对于每段任务程序可以分为标量处理部分和矢量处理部分。其中,标量处理部分为矢量处理部分提供参数。标量核负责标量处理部分,矢量核负责矢量处理部分(兼具标量运算功能)。标量核计算矢量处理所必需的参数,存于参数寄存器,并将参数写入PBUF57。标量核每完成一个任务的参数计算还会执行fork指令或sync指令(fork带矢量核子程序地址,sync不带),并将该指令信息写入PBUF57,目的是将不同任务的参数隔离区分开来以及双核同步。从PBUF57读出的参数依次写入矢量核的相应shadow寄存器,当读到fork或sync信息时,并且矢量核处于空闲状态或者已完成上个任务处理(以矢量核执行到sync指令为标志),则所有shadow寄存器值在一个周期内被一次性拷贝到对应的work寄存器,然后矢量核根据work寄存器携带的参数开始矢量计算。在矢量核进行某个任务矢量计算的同时,标量核可以继续后面任务的参数计算并将其写入PBUF57。通过对每个任务进行标量处理和矢量处理切割,分别由标量核和矢量核处理,并利用PBUF57传递参数和同步信息,可以实现双核并行运算,以及连续任务的流水操作和快速切换。
[0084]此外,处理
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1