一种动态可重构处理器的任务级并行调度方法与系统的制作方法_2

文档序号:9727118阅读:来源:国知局
036]步骤S300:所述主控制器执行串行部分代码;
[0037]步骤S400:当执行到内核函数部分代码时,所述主控制器对可重构处理单元进行调度分配处理所述内核函数部分代码。
[0038]对于一般的可重构处理器,并行过程大多仅仅是利用可重构部件的高速运算来处理大量重复性的计算密集型的运算,而对于本发明针对的多层次的比较复杂的异构可重构处理器,它包含了三个层次的计算模块,分别为主控制器、协控制器和PEA,它们三者之间内存独立,共同构成了一个三层次的可重构异构架构。在对应用程序进行处理的过程中,任务级并行的方法不仅仅包括了可重构单元的并行,还包括了多RPU的分配和调度。
[0039]对于一个应用的C代码程序,我们将其中计算密集的可并行代码封装为kernal(内核)函数,在一个应用中,可以存在多个功能和复杂程度不同的kernal函数。在编译过程中,将串行部分和并行部分分别编译生成适合主控制器部分和可重构处理单元RPU部分的可执行代码。kernal函数存在两个层次的并行,分别为不同RPU之间的同步异步的并行以及RPU内部4个PEA上的代码并行。
[0040]对于一个多任务的应用程序,在可重构架构上执行时,先由主控制器执行串行部分代码,在执行到kernal部分时,会由主控制器的RPU调度器对RPU进行分配,并且分为同步调用和异步调用两种并行方式:
[0041]若为同步调用,则由主控制器寻找未在运行中的可重构处理单元,并且载入可执行代码和配置信息,与此同时,主控制器挂起,同步调用中,将多个可重构处理单元同时调用,处理不同数据块的内容,在所有的可重构处理单元处理结束之后,通过同步函数返回值来更新处理结果,并且继续主控制器的串行代码执行;
[0042]若为异步调用,则由主控制器寻找未在运行中的可重构处理单元,与此同时在不中断主控制器的前提下将可执行代码和配置信息载入,启动可重构处理单元,主控制器继续运行至需要可重构处理单元返回数据时,再中止等待可重构处理单元计算完成并返回数据。同步调用方式可以将数据量大的kernal函数通过多RPU并行计算来处理,而异步调用可以将不同的没有依赖关系的kernal进行并行。
[0043]在对执行kernal函数的RPU进行分配和调度后,在RPU内部同样的存在任务并行,也就是第二个层次的并行计算。在本发明依赖的硬件架构中,每个RPU中包含了4个PEA和相对应的SM,其中SM可以被周围相连的两个PEA所读写,这样我们就可以针对这种架构完成针对kernal种类的两种方式的并行计算方法。
[0044]请参考图3和图4,图3和图4所示为当所述内核函数指令较少时的同步调度方法示意图。当所述内核函数指令较少,一个可重构处理单元可以单独完成整个内核函数的计算任务时,其内部的多个可重构处理单元阵列并行执行相同的配置信息,每个可重构处理单元阵列负责自己的共享存储器的数据计算,这样便可以将kernal执行时间缩短到最多四分之一。其中第一排方框blockl?4表不协控制器将数据从DDR拷贝到SM的左半部分,圆圈表示PEA执行,第二排方框blockl?4表示PEA将计算完的数据输出到SM的右半部分,第三排方框blockl?4表示协控制器将数据从SM右半部分输出到DDR中,以上为程序当中的循环体。
[0045]当所述内核函数指令较多,不能一次性的执行完内核函数的所有语句时,对这种情况,我们需要采取流水的方式进行任务并行,具体方案为将kernal函数分为不多于4个的子任务,每个子任务长度尽量相同,分别将子任务的配置信息按顺序分给4个PEA,由于每个可重构处理单元阵列可以读写相邻的上层共享存储器和下层共享存储器,将每个共享存储器分为等大小的A块和B块,在任务流水过程中,每个可重构处理单元阵列先从上层共享存储器的A块读取数据,并将结果写入下层共享存储器的B块,处理结束之后,每个可重构处理单元阵列再从上层共享存储器的B块读取数据,并将结果写入下层共享存储器的A块,在这两个过程的同时,对首末共享存储器没有参与计算的部分进行数据到主内存的搬运。这样,整个过程中没有额外的数据搬运时间,能够很好的无间断的流水执行kernal函数。
[0046]请参考图5,图5所示为当所述内核函数指令较多时的异步调度方法示意图。如图5所示,程序员将循环中的所有命令按照一定的方法分为几个部分,在编译器处理GR-C的过程中,会将这些命令分别编译成不同的PEA配置包,由4个PEA顺序调用,在时钟周期上分别延后一个周期在进行运作,达到流水的效果,第一个周期,PEA1将SM1中A部分的数据进行运算,结果放入SM2的B块中,第二个周期PEA1将SM1中B部分的数据进行运算,同时PEA2将SM2的B块数据进行运算,分别放入SM2和SM3的A块中,以此类推形成流水的过程,在PEA4计算完数据后直接将数据copy到主存中,直到所有的数据处理完毕。RPU内部按任务划分完整的执行流程,其中blockl?block5表示不同的数据流,最右侧方框表示数据从SM3中输出到DDR中。
[0047]虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
【主权项】
1.一种动态可重构处理器的任务级并行调度系统,其特征在于,包括主控制器、多个可重构处理单元、主存储器、直接存储访问和系统总线, 其中,所述每个可重构处理单元由协控制器、多个负责可重构计算的可重构处理单元阵列和多个用于数据存储的共享存储器组成,其中所述可重构处理单元阵列和共享存储器相邻排列,所述共享存储器可被周围相连的两个可重构处理单元阵列所读写。2.根据权利要求1所述的动态可重构处理器的任务级并行调度系统,其特征在于,所述主控制器用于执行程序中不适合可重构处理单元处理的串行代码,并负责多个可重构处理单元的调度、启动与运行。3.根据权利要求1所述的动态可重构处理器的任务级并行调度系统,其特征在于,所述可重构处理单元负责计算程序中计算密集的可并行代码。4.根据权利要求1所述的动态可重构处理器的任务级并行调度系统,其特征在于,所述协控制器用于搬运多个可重构处理单元阵列计算所需的数据与配置信息,控制多个可重构处理单元阵列的启动、运行与终止。5.—种动态可重构处理器的任务级并行调度方法,其特征在于,包括下列步骤: 将应用程序中的计算密集的可并行代码封装为内核函数; 将串行部分代码和并行部分代码分别编译生成适合主控制器和可重构处理单元的可执行代码; 所述主控制器执行串行部分代码; 当执行到内核函数部分代码时,所述主控制器对可重构处理单元进行调度分配处理所述内核函数部分代码。6.根据权利要求5所述的动态可重构处理器的任务级并行调度方法,其特征在于,所述主控制器对可重构处理单元进行调度分为同步调用和异步调用两种并行方式: 若为同步调用,则由主控制器寻找未在运行中的可重构处理单元,并且载入可执行代码和配置信息,与此同时,主控制器挂起,同步调用中,将多个可重构处理单元同时调用,处理不同数据块的内容,在所有的可重构处理单元处理结束之后,通过同步函数返回值来更新处理结果,并且继续主控制器的串行代码执行; 若为异步调用,则由主控制器寻找未在运行中的可重构处理单元,与此同时在不中断主控制器的前提下将可执行代码和配置信息载入,启动可重构处理单元,主控制器继续运行至需要可重构处理单元返回数据时,再中止等待可重构处理单元计算完成并返回数据。7.根据权利要求5所述的动态可重构处理器的任务级并行调度方法,其特征在于,当所述内核函数指令较少,一个可重构处理单元可以单独完成整个内核函数的计算任务时,其内部的多个可重构处理单元阵列并行执行相同的配置信息,每个可重构处理单元阵列负责自己的共享存储器的数据计算。8.根据权利要求5所述的动态可重构处理器的任务级并行调度方法,其特征在于,当所述内核函数指令较多,不能一次性的执行完内核函数的所有语句时,将内核函数分为多个长度相同的子任务,分别将子任务的配置信息按顺序分配给多个可重构处理单元阵列,由于每个可重构处理单元阵列可以读写相邻的上层共享存储器和下层共享存储器,将每个共享存储器分为等大小的A块和B块,在任务流水过程中,每个可重构处理单元阵列先从上层共享存储器的A块读取数据,并将结果写入下层共享存储器的B块,处理结束之后,每个可重构处理单元阵列再从上层共享存储器的B块读取数据,并将结果写入下层共享存储器的A块,在这两个过程的同时,对首末共享存储器没有参与计算的部分进行数据到主内存的搬运。
【专利摘要】本发明提出一种动态可重构处理器的任务级并行调度方法与系统,其中该系统包括主控制器、多个可重构处理单元、主存储器、直接存储访问和系统总线,其中,所述每个可重构处理单元由协控制器、多个负责可重构计算的可重构处理单元阵列和多个用于数据存储的共享存储器组成,其中所述可重构处理单元阵列和共享存储器相邻排列,所述共享存储器可被周围相连的两个可重构处理单元阵列所读写。本发明提出的动态可重构处理器的任务级并行调度方法与系统,通过调节调度方法能够针对不同的任务进行不同的调度方式,基本所有并行任务均能在这种可重构处理器上得到好的并行加速。
【IPC分类】G06F9/38
【公开号】CN105487838
【申请号】CN201510817591
【发明人】田丰硕, 赵仲元, 绳伟光, 何卫锋
【申请人】上海交通大学
【公开日】2016年4月13日
【申请日】2015年11月23日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1