一种适用于粗粒度多核计算系统的发射模块及其工作方式的制作方法

文档序号:12363666阅读:304来源:国知局
一种适用于粗粒度多核计算系统的发射模块及其工作方式的制作方法与工艺

本发明涉及高密度计算及处理器调度领域,具体地说是一种适用于采用两级编程架构计算系统的发射模块及其工作方式。



背景技术:

多核技术因为低功率消耗、强并行处理能力和优异的计算性能已经成为处理器设计的主流。然而,实现运算核之间的高效通讯和任务的高效映射,直接关系到多核系统的算力能否被发挥,是当今多核系统面临的重要问题,被称作“编程墙”。

在多核系统的编程中,采用两级编程架构能够降低编程难度,提高编程效率,方便多核系统的任务调度。但是,如何实现两级程序间的协同,以及如何根据系统状态更新底层任务指令中的功能单元信息,是两级编成架构处理器设计中面临的一个难题。



技术实现要素:

本发明为克服现有发明的不足之处,提出了一种适用于粗粒度多核计算系统的发射模块及其工作方式,以期能够高效地实现两级程序间的协同,实现功能单元根据任务指令的需求进行分配,从而避免采用提前确定的功能单元执行任务指令的方案可能引起结构冒险而降低系统计算性能的问题,也避免采用后续功能单元坐标更新方案可能导致的网络拥塞以及逻辑资源的过多消耗等问题,进而提高系统的计算性能。

本发明为达到上述目的所采用的技术方案是:

本发明一种适用于粗粒度多核计算系统的发射模块的特点是设置所述粗粒度多核计算系统的主控制单元内,所述主控制单元包括:调度模块、空闲功能队列模块、数据网络仲裁器和配置网络仲裁器;

所述发射模块包括:底层任务指令存储器、顶层任务指令存储器、控制器模块、功能单元请求表、填充模块、调度模块接口、配置网络接口、数据网络接口;

所述调度模块接口从所述调度模块接收到顶层任务指令,并将所述顶层任务指令缓存到所述顶层任务指令存储器中,当所述顶层任务指令接受完毕后,所述调度模块接口发送接收完毕信号给所述控制器模块;

所述顶层任务指令包含:在所述粗粒度多核计算系统中所述顶层任务指令所需的各种功能单元的数量字段、与所述顶层任务指令对应的底层任务指令的起始地址与长度字段;

所述控制器模块接收所述接收完毕信号后,从所述顶层任务指令存储器获取所述顶层任务指令,并将所包含的数量字段传递给所述功能单元请求表;同时根据所述顶层任务指令中所包含的底层任务指令的起始地址与长度信息,向所述配置网络接口发送底层任务指令请求信息;

所述功能单元请求表根据所述控制器模块提供的数量字段,向所述空闲功能单元队列发送空闲功能单元请求,并等待接收所述空闲功能单元队列反馈的功能单元坐标信息;所述功能单元请求表接收到所述功能单元坐标信息并进行分类后保存在所述功能单元请求表内;

所述配置网络接口接收到所述控制器模块传来的底层任务指令请求信息并进行打包后,转发给所述主控制单元的配置网络仲裁器用于请求底层任务指令;

所述数据网络接口从所述数据网络仲裁器接收到所请求的底层任务指令,并将所述底层任务指令缓存到所述底层任务指令存储器中;所述底层任务指令包括:所述粗粒度多核计算系统中各个功能单元的配置信息;

所述底层任务指令存储器接收所述数据网络接口传来的底层任务指令并进行缓存后,发送缓存完毕信号给所述控制器模块;

所述控制器模块收到所述缓存完毕信号后,分别发送读取信号和填充信号给所述底层任务指令存储器和所述填充模块;

所述底层任务指令存储器接收到所述读取信号后,将所述底层任务指令读出,并传送给所述填充模块;

所述填充模块收到所述填充信号及所述底层任务指令存储器传来的底层任务指令后,根据底层任务指令中各个功能单元的配置信息所包含的功能单元类型,将所述配置信息分派到所述填充模块中进行填充;在填充过程中所需要的功能单元坐标,是由所述填充模块向所述功能单元请求表发送查询请求,并从所述功能单元请求表中获得的;

在底层任务指令的各个功能单元的配置信息填充结束后,所述填充模块将填充结束后的底层任务指令发送给所述配置网络接口,并等待接收下一个底层任务指令的各个功能单元的配置信息;

所述配置网络接口接收到所述填充结束后的底层任务指令并进行打包,从而转发给所述主控制单元的配置网络仲裁器,用于完成底层任务指令的下发。

本发明一种适用于粗粒度多核计算系统的发射模块的工作方式,是应用于所述粗粒度多核计算系统的主控制单元中,所述主控制单元包括:调度模块、空闲功能队列模块、数据网络仲裁器和配置网络仲裁器;所述发射模块包括:功能单元请求表、填充模块;其特点是,

所述发射模块的工作方式是按如下步骤进行:

步骤1、所述发射模块的从所述调度模块接收到顶层任务指令并进行缓存;所述顶层任务指令包含:在所述粗粒度多核计算系统中所述顶层任务指令所需的各种功能单元的数量字段、与所述顶层任务指令对应的底层任务指令的起始地址与长度字段;

步骤2、当所述顶层任务指令接受完毕后,所述发射模块将所述顶层任务指令所包含的数量字段传递给所述功能单元请求表;同时根据所述顶层任务指令中所包含的底层任务指令的起始地址与长度信息,向所述配置网络仲裁器发送底层任务指令请求信息用于请求底层任务指令;

步骤4、所述功能单元请求表根据所述发射模块提供的数量字段,向所述空闲功能单元队列发送空闲功能单元请求,并等待接收所述空闲功能单元队列反馈的功能单元坐标信息;

步骤5、所述功能单元请求表接收到所述功能单元坐标信息并进行分类后保存在所述功能单元请求表内;

步骤6、所述发射模块从所述数据网络仲裁器接收到所请求的底层任务指令并进行缓存;所述底层任务指令包括:所述粗粒度多核计算系统中各个功能单元的配置信息;

步骤7、当所述发射模块完成底层任务指令的接收后,发送填充信号给所述填充模块;同时将所述底层任务指令也发送给所述填充模块;

步骤8、所述填充模块收到所述填充信号及所述底层任务指令后,根据底层任务指令中各个功能单元的配置信息所包含的功能单元类型,将所述配置信息分派到所述填充模块中进行填充;在填充过程中所需要的功能单元坐标,是由所述填充模块向所述功能单元请求表发送查询请求,并从所述功能单元请求表中获得的;

步骤9、在底层任务指令的各个功能单元的配置信息填充结束后,所述填充模块将填充结束后的底层任务指令进行打包后发送给所述配置网络仲裁器,用于完成底层任务指令的下发。

与现有技术相比,本发明的有益技术效果体现在:

1、本发明在任务指令发射时,将顶层任务指令在任务调度中获得的功能单元坐标等信息直接填充到底层任务指令中,从而实现了两级程序指间的协同,使通过顶层任务指令进行调度的过程与通过底层任务指令进行功能单元任务下发的过程联系起来,从而使两级编程架构中顶层任务指令方便任务调度的优势得以体现;

2、与现有技术中采用提前确定的功能单元坐标执行任务指令的方案相比,本发明通过设计填充模块和功能单元请求表,实现了功能单元的动态分配,即当系统中有任务指令所需要类型的功能单元时,既可以将其分配给该任务指令,而不需要等待提前确定的功能单元空闲,从而大大降低了计算系统发生结构冒险的可能性;将功能单元的位置与功能单元的功能和类型解耦,使程序员在编写程序时不需要关注各个功能单元是否处于空闲状态,从而显著降低了编程难度,提高了编程效率;

3、与现有技术中采用后续功能单元坐标更新方案相比,本发明将任务指令的下发与功能单元的分配合并在了同一步骤中,并在空间上将其限定在了主控制单元中,由此主控制器在一条任务指令中只需要给相应的功能单元发送一次配置信息,减少了网络发生拥堵的可能性;计算系统中的功能单元均不需要设计更新坐标操作所需要的相应硬件逻辑,而只需要在主控制单元中设置相应逻辑,从而降低了计算系统中功能单元设计的任务量,同时考虑到计算系统中主控制单元只有一个,硬件逻辑资源消耗可以控制,而功能单元数量较多,每个功能单元都增加刷新逻辑会大大增加整个计算系统的资源消耗,本发明通过填充模块的设计,能大大减少计算系统的资源消耗;最后,功能单元在收到配置信息后可以立即执行计算任务,而不需要等待刷新信息,从而提高了计算系统的工作效率。

附图说明

图1为本发明所面向的采用两级编程架构计算系统的结构图;

图2为本发明所面向系统的工作流程图;

图3为本发明所面向粗粒度多核计算系统的主控制单元结构图;

图4为本发明发射模块的结构图;

图5为本发明两级编程架构示意图。

具体实施方式

在本例实施中,一种适用于粗粒度多核计算系统的发射模块,设置在粗粒度多核计算系统的主控制单元内,如图1所示,目标系统包括片上网络、主控制单元、存储器和多种功能单元。其中片上网络包括用于数据交换的数据网络PCC、用于任务指令下发的配置网络Cfg_Net和用于反馈信号收集的状态网络Status_Net,数据网络采用包-电路交换机制,配置网络采用自上而下的广播方式,状态网络采用自下而上逐级汇总模式;存储器MEM由SDRAM实现,主要用于存储用于计算的指令和数据;功能单元则包括输入输出接口单元和多种不同类型计算单元,例如通用数据批量运算器、通用协处理器以及专用硬件定制加速器等。主控制单元主要负责计算任务的调度,并给存储器和其他功能单元下发任务指令。输入输出接口单元主要负责系统中源数据的导入和运算结果的输出,包括外设告诉接口单元和板间高速通信单元。计算单元则负责根据主控制单元下发的任务指令完成各种运算任务,可以有批量运算器、通用处理器、定向硬件加速器等多种类型,比如其中批量运算器采用可重构技术实现,负责系统中大批量的乘加规整运算;通用处理器中集成多种运算器,负责系统中的复杂零散运算或批量运算器无法完成的除法、三角函数等运算;定向硬件加速器则可以根据系统所面向领域经常遇到的算法进行定向硬件加速。

整个系统在主控制单元的控制下工作,存储器和其他功能单元均需要从主控制单元接收控制命令(称作配置信息,包括配置信息头和配置信息体),并根据其内容执行相应操作。系统上电复位后,主控制器从内置的ROM中读取初始化信息,然后从输入输出接口单元输入任务指令和源数据,存入存储器,接着按指令顺序从存储器中取任务指令,并根据任务指令的需求,选择相应的功能单元下发配置信息,使其执行计算。功能单元在执行完配置信息中要求的工作后,通过状态网络告知主控制器自身处于空闲状态,从而被主控制器回收,可以用来继续执行其他工作。当所有计算任务指令完成,计算系统通过输入输出接口单元输出运算结果。

本文提出的计算系统工作流程包括取指、译码、寄存器重命名、动态调度、发射、执行、写回和提交8个阶段,如图2所示,其中除执行阶段在各功能单元中完成外,其他阶段均在主控制单元内完成。

如图3所示,主控制单元包括:取指模块、译码模块、寄存器重命名模块、分支恢复模块、写回模块、提交模块、空闲物理寄存器队列、空闲虚拟寄存器队列、状态层接口、调度模块、空闲功能队列模块、数据网络仲裁器和配置网络仲裁器;

如图4所示,发射模块包括:底层任务指令存储器、顶层任务指令存储器、控制器模块、功能单元请求表、填充模块、调度模块接口、配置网络接口、数据网络接口;

功能单元请求表包括存储器请求表和各种计算单元请求表;

填充模块包括存储器填充模块和各种计算单元填充模块;

调度模块接口从调度模块接收到顶层任务指令,并将顶层任务指令缓存到顶层任务指令存储器中,当顶层任务指令接受完毕后,调度模块接口发送接收完毕信号给控制器模块;

顶层任务指令包含:在粗粒度多核计算系统中顶层任务指令所需的各种功能单元的数量字段、与顶层任务指令对应的底层任务指令的起始地址与长度字段;如图5所示,顶层任务指令通过存储的底层任务指令的起始地址与长度字段指向相应的底层任务指令。

控制器模块接收到接收完毕信号后,从顶层任务指令存储器获取顶层任务指令,并将所包含的该任务所需的存储器通道数量和各种计算单元数量的信息字段传递给功能单元请求表;同时根据顶层任务指令中所包含的底层任务指令的起始地址与长度信息,向配置网络接口发送底层任务指令请求信息;

功能单元请求表根据控制器模块提供的存储器通道数量和各种计算单元数量字段,向空闲功能单元队列发送空闲功能单元请求,并等待接收空闲功能单元队列反馈的功能单元坐标信息;功能单元请求表接收到功能单元坐标信息并进行分类后保存在功能单元请求表内;

配置网络接口接收到控制器模块传来的底层任务指令请求信息并进行打包后,转发给主控制单元的配置网络仲裁器用于请求底层任务指令;

数据网络接口从数据网络仲裁器接收到所请求的底层任务指令,并将底层任务指令缓存到底层任务指令存储器中;底层任务指令包括:粗粒度多核计算系统中各个功能单元的配置信息,如图5所示,底层任务指令是由该任务指令中所使用到的各个功能单元的配置信息顺次排列而成,并在最后用占位指令字填充到粗粒度多核计算系统所使用的SDRAM的突发长度整倍数;每个功能单元的配置信息包括配置信息头和配置信息体两部分;

底层任务指令存储器接收数据网络接口传来的底层任务指令并进行缓存后,发送缓存完毕信号给控制器模块;

控制器模块收到缓存完毕信号后,分别发送读取信号和填充信号给底层任务指令存储器和填充模块;

底层任务指令存储器接收到读取信号后,将底层任务指令读出,并传送给填充模块;

填充模块收到填充信号及底层任务指令存储器传来的底层任务指令后,根据底层任务指令中各个功能单元的配置信息中配置信息头所包含的功能单元类型,将配置信息分派到填充模块中进行填充;在填充过程中所需要的功能单元坐标,是由填充模块向功能单元请求表发送查询请求,并从功能单元请求表中获得的;

底层任务指令的各个功能单元的配置信息的填充过程是按顺序依次进行的,当一个功能单元完成填充过程后,底层任务指令中的下一个功能单元即开始填充操作,直到任务指令的所有功能单元均完成填充过程,则底层任务指令的配置信息填充操作结束;

在底层任务指令的各个功能单元的配置信息填充结束后,填充模块将填充结束后的底层任务指令发送给配置网络接口,并等待接收下一个底层任务指令的各个功能单元的配置信息;

配置网络接口接收到填充结束后的底层任务指令并进行打包,从而转发给主控制单元的配置网络仲裁器,用于完成底层任务指令的下发。

在本例实施中,一种适用于粗粒度多核计算系统的发射模块的工作方式,是应用于粗粒度多核计算系统的主控制单元中,主控制单元包括:调度模块、空闲功能队列模块、数据网络仲裁器和配置网络仲裁器;发射模块包括:功能单元请求表、填充模块;

发射模块的工作方式是按如下步骤进行:

步骤1、发射模块的从调度模块接收到顶层任务指令并进行缓存;顶层任务指令包含:在粗粒度多核计算系统中顶层任务指令所需的各种功能单元的数量字段、与顶层任务指令对应的底层任务指令的起始地址与长度字段;

步骤2、当顶层任务指令接受完毕后,发射模块将顶层任务指令所包含的数量字段传递给功能单元请求表;同时根据顶层任务指令中所包含的底层任务指令的起始地址与长度信息,向配置网络仲裁器发送底层任务指令请求信息用于请求底层任务指令;

步骤4、功能单元请求表根据发射模块提供的数量字段,向空闲功能单元队列发送空闲功能单元请求,并等待接收空闲功能单元队列反馈的功能单元坐标信息;

步骤5、功能单元请求表接收到功能单元坐标信息并进行分类后保存在功能单元请求表内;

步骤6、发射模块从数据网络仲裁器接收到所请求的底层任务指令并进行缓存;底层任务指令包括:粗粒度多核计算系统中各个功能单元的配置信息;

步骤7、当发射模块完成底层任务指令的接收后,发送填充信号给填充模块;同时将底层任务指令也发送给填充模块;

步骤8、填充模块收到填充信号及底层任务指令后,根据底层任务指令中各个功能单元的配置信息所包含的功能单元类型,将配置信息分派到填充模块中进行填充;在填充过程中所需要的功能单元坐标,是由填充模块向功能单元请求表发送查询请求,并从功能单元请求表中获得的;

步骤9、在底层任务指令的各个功能单元的配置信息填充结束后,填充模块将填充结束后的底层任务指令进行打包后发送给配置网络仲裁器,用于完成底层任务指令的下发。

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