可重构处理器上多层循环任务的硬件实现方法与流程

文档序号:24235740发布日期:2021-03-12 13:07阅读:82来源:国知局
可重构处理器上多层循环任务的硬件实现方法与流程

本发明涉及大规模集成电路(verylargescaleintegration,vlsi)和粗粒度可重构架构(coarse-grainedreconfigurablearchitecture,cgra)技术领域,尤其涉及可重构处理器上多层循环任务的硬件实现方法。



背景技术:

本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

以冯诺依曼架构为核心的计算机和微处理器在过去取得了巨大的成功,因为以指令流驱动为特征的处理器通常具有很强的灵活性。目前,指令流驱动的处理器通常包括通用处理器(generalpurposeprocesser,gpp)、可编程数字信号处理器(programmabledigitalsignalprocessor,pdsp)、专用指令集处理器(applicationspecificinstruction-setprocessor,asip)和嵌入式处理器。然而,也正是由于指令驱动的执行方式,以及有限的计算单元和存储带宽,此类处理器的性能和功耗很不理想,无法满足与日俱增的应用计算需求。例如,经典mips架构的通用处理器中,完整执行一条指令就包括取指、译码、寄存器访问、执行和数据回写这五个步骤。其中,只有“执行”这一步是真正所需要的操作。

与指令流驱动对应的是数据流驱动,相应的计算被称为定制计算或专用计算。上世纪90年代兴起的专用集成电路(applicationspecificintegratedcircuits,asic)采用的就是数据流驱动的计算架构。这一架构与通用处理器的最大差别就在于前者的行为是确定的,控制向量事先存储在控制器中,等待数据流去触发不同的状态即可。asic无需指令集,可以针对不同的应用去设计最优的数据通路,从而达到优良的性能和较低的功耗。但是asic也存在致命的缺陷,因为它的灵活性和可扩展性极差,无法适用于日益演变的应用场景和功能。随着制程向着7nm甚至5nm推进,专用集成电路的制造费用变得非常昂贵,其漫长的设计周期也制约了它的向前发展。

场可编程门阵列(fieldprogrammablegatearray,fpga)是一种可重构的硬件,它利用硬件描述语言(vhdl和veriloghdl)和特殊的工艺(eeprom、sram和反熔丝等),可以将设计快速映射成实际的电路。fpga也有其缺点,那就是设计的粒度太小、造价昂贵以及性能较asic差。

在这些背景下,一种粗粒度可重构处理器(coarse-grainedreconfigurablearchitecture,cgra)应运而生。粒度是指可重构处理器数据通路中运算单元的数据位宽度,一般将大于等于4bit的粒度称为粗粒度。一般情况下,粒度越大的可重构处理器所需的配置信息越少,重构数据通路的速度也就越快,但是其灵活性也就越低。现如今,人工智能的应用为处理器带来了新的挑战,它要求处理器的计算能力更强,面对不同人工智能算法要具有更优化的计算策略。cgra本身的架构特点使其能够较好地满足这些应用需求,因为它兼具通用处理器的灵活性和asic的高性能。



技术实现要素:

本发明实施例提供一种可重构处理器上多层循环任务的硬件实现方法,用以减少从外部配置存储器读取配置和配置包的次数,从而提升了整个cgra的运算性能,该方法包括:

配置粗粒度可重构处理器cgra上实现多层循环任务的配置信息,所述配置信息包括顶层型配置信息和pe运算配置信息;

将顶层型配置信息载入cgra的处理单元阵列pea,将顶层型配置信息中的pea循环迭代次数存入pea的全局寄存器,通过pea的控制器和全局寄存器完成pea层次循环任务;

将顶层型配置信息载入cgra的处理单元pe,将顶层型配置信息中的pe循环迭代次数存入pe的局部寄存器,通过pe的控制器和局部寄存器完成pe层次循环任务;

将pe运算配置信息中的迭代次数和迭代间隔存入pea的全局寄存器或pe的局部寄存器,基于pe的控制器完成pe中单条配置层次循环任务。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中cgra中参与计算的处理单元阵列pea的结构示意图;

图2为本发明实施例中cgra中参与计算的处理单元pe的结构示意图;

图3为本发明实施例中可重构处理器上多层循环任务的硬件实现方法示意图;

图4为本发明实施例中多层循环任务执行的波形示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

本发明首先介绍了一种粗粒度可重构处理器cgra(coarse-grainedreconfigurablearchitecture),它的结构是一种层次化的结构,包含多个处理单元(processingelement,pe)和多个处理单元阵列(processingelementarray,pea)。pea的结构如图1所示:pea内部集成了一个8×8pearray、pe的全局寄存器globalreg、协处理器接口coprocessorinterface、数据控制器datacontrol、数据共享存储器sharedmemory、处理单元阵列控制器peacontrol和配置控制器contextcontrol。处理单元pe的结构如图2所示,内部的核心部分有:处理单元控制器pecontrol、配置存储器(contextmemory,cm)、局部寄存器(localreg,lr)、pe路由器router、debug模块deb(调试模块)以及pe执行单元,pe执行单元包括算数逻辑单元(arithmeticlogicunit,alu)、乘法器(multiplier,mul)和存储单元(loadstoreunit,lsu)。

基于cgra的这种结构,本发明提出了可重构处理器上多层循环任务的硬件实现方法。其中,控制任务循环迭代的硬件主要是pea控制器peacontrol和pe控制器pecontrol,以及存储迭代次数的全局寄存器globalreg和局部寄存器localreg。

如图3所示,本发明提出的可重构处理器上多层循环任务的硬件实现方法包括:

配置粗粒度可重构处理器cgra上实现多层循环任务的配置信息,所述配置信息包括顶层型配置信息和pe运算配置信息;

将顶层型配置信息载入cgra的处理单元阵列pea,将顶层型配置信息中的pea循环迭代次数存入pea的全局寄存器,通过pea的控制器和全局寄存器完成pea层次循环任务;

将顶层型配置信息载入cgra的处理单元pe,将顶层型配置信息中的pe循环迭代次数存入pe的局部寄存器,通过pe的控制器和局部寄存器完成pe层次循环任务;

将pe运算配置信息中的迭代次数和迭代间隔存入pea的全局寄存器或pe的局部寄存器,基于pe的控制器完成pe中单条配置层次循环任务。

三个层次的循环任务相当于嵌套循环的关系:第一层pe层次循环任务是最外层的大循环,在这个循环里,包含了第二层pe层次循环任务;第二层循环中又包含了第三层pe中单条配置层次循环任务。循环开始时,自然是从第一层开始,接着第二层,然后第三层。第三层循环结束时,返回到第二层循环,进行第二次迭代。第二层循环结束时,返回到第一层循环,进行第二次迭代。依此类推,直至所有层次的循环迭代完毕,则结束。

具体的,所述pe运算配置信息包括alu运算型配置信息和/或访存运算型配置信息。所述alu运算型配置信息包括乘法类运算配置信息和/或乘累加类运算配置信息。

在本发明实施例中,任务循环迭代的次数是通过配置信息的某些字段实现的。cgra中的配置信息全部采用64-bit的配置信息格式,目前用到的主要包含三大类:顶层型配置信息、alu运算型配置信息(包含乘法类和乘累加类运算)和访存运算型配置信息。它们的格式和每个字段的含义如下表1、表2和表3所示:

表1顶层型配置信息

表2alu运算型配置信息

表3访存运算型配置信息

对上述位置进行举例说明,[63]就是暂时没有用到它,置0即可;[62:61]这2位可以配置pe的功能:为10时pe就进行访存运算,为01时就进行算数运算。也就是说,[62:61]类似于计算机指令中的操作码字段。

下面对三层循环进行详细说明。

第一层循环任务是指pea中配置包的循环迭代。如表1中顶层配置信息所示,位于[36:30]的iteration_pea字段控制了pea中配置包的循环迭代次数,最大支持128次。当该条顶层配置信息载入到pea时,iteration_pea字段的值写入pea的全局寄存器globalreg,当完成一次迭代时,pea的控制器peacontrol发送一个finish信号给全局寄存器,该全局寄存器的值减1;当全局寄存器的值减为0时,即完成所有迭代。

第二层循环任务是指pe中配置包的循环迭代。如表1中顶层配置信息所示,位于[29:23]的iteration_pe字段控制了pe中配置包的循环迭代次数,最大支持128次。当该条顶层配置信息载入到pe时,iteration_pe字段的值写入pe的局部寄存器localreg,当完成一次迭代时,pe的控制器pecontrol发送一个finish信号给局部寄存器,该局部寄存器的值减1;当局部寄存器的值减为0时,即完成所有迭代。

第三层循环任务是指pe中配置包中单条配置信息的循环迭代。如表2和表3中运算型和访存型配置信息所示,位于[14:5]的iteration字段表示本配置迭代次数iter_num,以及迭代间隔iter_ii。iteration字段为不同值时分别执行不同的功能:

(1)iteration[9:8]=00时,表示直接用iteration[7:0]的值表示迭代次数和迭代间隔。iteration[7:3]表示本配置迭代次数iter_num,最大31次;iteration[2:0]表示本配置迭代间隔iter_ii,最大7拍。

(2)iteration[9:8]=01时,表示当iter_num大于32或者iter_ii大于8时,去取globalreg中存储的表示迭代次数和迭代间隔的值。iteration[7:3]表示32个globalreg的索引index,其中globalreg[31:10]表示迭代次数iter_num;globalreg[9:0]表示迭代间隔iter_ii。

(3)iteration[9:8]=10时,表示当iter_num大于32或者iter_ii大于8时,去取localreg中存储的表示迭代次数和迭代间隔的值。iteration[7:3]表示32个localreg的索引index,其中localreg[31:10]表示迭代次数iter_num;localreg[9:0]表示迭代间隔iter_ii。

(1)(2)(3)这3点描述的都是第三层循环任务(也即pe中单条配置信息的循环)的执行。那么,第三层循环任务需要循环多少次?每次循环迭代之间的间隔时间是多少呢?这就需要一些值表示,这些值是通过iteration字段描述的。在(1)中,iteration的[7:3]这5位直接表示迭代次数,[2:0]这3位直接表示迭代间隔;由于iteration字段的长度限制了可以表示的次数和间隔的最大值,所以在(2)中就有些区别了,[7:3]这5位作为索引地址,去访问全局寄存器globalreg,得到了32位的值,该值的高22位[31:10]作为迭代次数,低10位[9:0]作为迭代间隔,这样可以表示的迭代次数和间隔的值更大;(3)与(2)类似,只不过访问的是局部寄存器localreg。

另外,当涉及到访存类型的配置循环迭代时,访存地址在不同迭代时的变化是由表5.3中所示的位于[36:33]的offset字段实现的。

下面是多层循环任务执行的一个实例。

pea和pe对配置包的迭代次数均设为1,即iteration_pe=1,iteration_pea=1。配置包是一条顶层配置和一条加法运算,其中加法迭代次数iter_num为10。

顶层配置信息为:

0_00_00000_000_00000_010_00001000_0000001_0000001_000001_01_00_0_000000_000001。

加法运算配置信息为:

0_01_01100000_00101001_00000000_000000_0_1000000_1000000_0_0001010001_00010。

波形如图4所示,每当一次加法运算执行完成时,pe_execute_finish信号拉高表示一次运算迭代完成;每当一条配置信息执行完成时,pe_config_finish信号拉高表示一次配置迭代完成;每当一次pe的配置包迭代完成时,pe_config_package_one_iter_finish信号拉高;每当一次pea的配置包迭代完成时,pea_cp_one_iteration_finish信号拉高。这些finish信号分别发送到控制不同迭代的寄存器,从而实现对循环任务迭代次数的控制。

在本发明实施例中,本发明提出的可重构处理器上多层循环任务的硬件实现方法,通过处理单元阵列pea和处理单元pe上的控制器和寄存器,配合配置信息中的字段(比如顶层配置信息中的iteration_pe字段、iteration_pea字段以及运算和访存信息中的iteration字段),实现了对三种层次下(pea层次、pe层次和单条配置层次)的任务循环迭代。该方案减少了从外部配置存储器读取配置和配置包的次数,从而提升了整个cgra的运算性能。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1