基于分合思想的并行计算硬件结构的制作方法

文档序号:6601163阅读:297来源:国知局

专利名称::基于分合思想的并行计算硬件结构的制作方法
技术领域
:本发明涉及计算机及电子信息
技术领域
,特别涉及一种基于分合思想的并行计算硬件结构。
背景技术
:随着计算复杂度和数据规模的迅速提升,利用传统的串行处理的中央处理器已经无法处理大规模的复杂应用,因此如何高效地解决计算问题变得十分重要。利用硬件电路的高度并行性来加速算法实现是解决这类问题的一种有效方法,同时,硬件电路灵活的存储控制使得存储容量和访问速度都有了可靠的保证。然而,如何对硬件电路进行设计,充分利用硬件电路的并行性等优点,并且屏蔽掉同步、调度等复杂问题,加快从研发到市场的时间,是个非常关键的问题。随着信息时代的到来,需要处理的数据以指数增长,同时处理的复杂度也大幅度提升,例如网络应用、生物信息应用及金融应用等。如何能够从大规模的数据及复杂的计算当中迅速准确地提取关键的、最有价值的数据对于知识获得、战胜疾病及获取价值等等都是十分重要的。然而,随着集成电路特征尺寸的不断降低,试图通过提升通用处理器的处理频率来解决上述问题已经愈发困难,同时,功耗、散热等一系列问题限制了通用处理器的处理能力。因此,利用并行处理成为了解决这一问题的唯一方式。然而利用多核处理器及集群虽然能在一定程度上缓解通用处理器频率受限带来的问题,但是功耗、散热问题会变得更加严重,而且并行编程及控制难度大、效率低进一步限制了此类技术的发展。利用定制化的硬件电路设计是解决这一问题的有效办法。专用集成电路(ASIC)是设计者针对特定应用设计的硬件电路,它可以充分利用应用的计算特性,对电路进行定制化的高效设计。然而,专用集成电路设计复杂度高,优化难度大,同时设计成型之后,掩膜费用高,而且无法修改,这无疑加大了设计成本,使得产品到市场的周期过长,不具有市场竞争力。利用可重配置的器件进行雏形设计、同时利用通用的涉及架构是解决此类问题的有效办法。利用现场可编程门阵列(FPGA)等可重配置的器件进行硬件电路的雏形研究是一种有效地办法。以FPGA为例,FPGA具有大量可并行的处理单元,可以根据设计者需要配置成各种电路结构;同时FPGA具有丰富的接口,可以进行多层次存储架构的雏形研究。更为重要的是,利用FPGA可以迅速对设计进行验证,发现问题还可以通过可重配置进行重新配置,修改简单,设计周期相对较短。然而,FPGA依然需要利用硬件描述语言进行设计,设计复杂度高。
发明内容本发明的目的旨在至少解决上述技术缺陷之一,本发明提出了一种基于分合思想的并行计算硬件结构。为达到上述目的,本发明一方面提出一种基于分合的思想的并行计算硬件电路结构,包括多个第一并行计算单元,用于进行分操作的计算;多个第二并行计算单元,用于进行合操作的计算;任务调度器,用于对所述多个第一并行计算单元和多个第二并行计算单元进行控制以使所述多个第一并行计算单元和多个第二并行计算单元同时进行分操作和合操作;全局存储器,用于存储全局数据;本地存储器,用于在计算开始后,存储所述多个第一并行计算单元计算的中间结果,并提供给所述多个第二并行计算单元;和数据控制器,用于为所述多个第一并行计算单元和所述任务调度器提供数据。在本发明一个实施例中,所述任务调度器对所述多个第一并行计算单元和多个第二并行计算单元进行控制包括所述任务调度器分别记录空闲的计算单元和等待计算的任务;如果有计算单元存在空闲,并且计算任务还有剩余时,则将计算任务分配给空闲的计算单元;如果计算单元处理完成一个任务,则所述任务调度器将该计算单元的序号再次放入空闲处理单元队列,等待分配给其下次任务。在本发明一个实施例中,所述任务调度器同时取出多个任务分给对应的多个空闲的计算单元。在本发明一个实施例中,所述第一并行计算单元和第二并行计算单元包括调度接口和数据接口,所述调度接口用于接收所述任务调度器的指令,所述数据接口用于存取数据。在本发明一个实施例中,所述第一并行计算单元和第二并行计算单元中还包括寄存器堆。在本发明一个实施例中,当计算开始时,所述数据控制器将部分数据从所述全局存储搬移到所述本地存储器,供所述第一并行计算单元和第二并行计算单元使用。在本发明一个实施例中,所述数据控制器根据优先级顺序,通过对计算单元吞吐率的估计,合理的预取一定数量的数据以保证数据消耗持续不断。在本发明一个实施例中,通过公共数据通路将公共数据同时提供给多个计算单兀。利用本发明实施例提出的针对并行计算应用的硬件结构,可有效地掩盖了调度、同步和通信的设计思考,使设计者可以直接关注算法的计算部分的表述,因此能够降低并行电路设计复杂度,且能够很大程度缩小电路设计与实现的时间。另外,通过架构中自有的动态的调度和高效的数据存储,可以充分利用硬件资源,使得对应用的实现以一种高度并行的方式完成,加速了应用的计算时间,获得了能够和手工优化相比拟的性能。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中图1为本发明实施例的基于分合的思想的并行计算硬件电路结构图;图2为本发明实施例的采用本发明结构进行电路设计和实现的示意图;图3为本发明实施例的一种任务调度器的实现示意图;图4为本发明实施例利用本发明的并行计算硬件电路结构对一种排序算法的快速实现框图。具体实施例方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本发明提出了一种针对并行计算应用的硬件电路设计结构,对于并行计算等实际应用中的硬件电路设计问题,简化了设计流程,提高了设计效率,并且通过分合的思想充分利用了并行计算的优势。如图1所示,为本发明实施例的基于分合的思想的并行计算硬件电路结构图。该基于分合的思想的并行计算硬件电路100包括数据控制器110、任务调度器120、多个第一并行计算单元130(用于分操作的计算)、多个第二并行计算单元140(用于合操作的计算)、全局存储器150和用于存储中间结果的本地存储器160。在本发明中,通过多个第一并行计算单元130和多个第二并行计算单元140可将并行计算应用划分为“分”、“合”两步进行,每一步都可以并行操作,并通过任务调度器120对多个第一并行计算单元130和多个第二并行计算单元140进行调度控制。该结构是一种隐藏掉任务调度、同步和通信的并行电路设计架构,而且通过特殊的数据通路设计,使得并行计算能够最大限度的利用硬件电路资源,尽可能高地获得加速比。利用此架构,用户设计者只需要根据不同的应用,提炼出两步操作的算法描述,此架构可以自动完成任务调度以及数据访问。其中,任务调度器120根据任务需求对多个第一并行计算单元130和多个第二并行计算单元140进行控制,使得可以同时进行分操作和合操作。在本发明实施例中,任务调度器120被设计为通过动态地记录未完成的任务数量以及监测计算单元的状态,来进行合理的任务到处理单元的高效调度,充分地调用硬件资源。任务调度器120中会有两种队列,分别记录空闲的计算单元(包括第一并行计算单元或第二并行计算单元)和等待计算的任务。当有计算单元存在空闲,并且计算任务还有剩余时,就会将计算任务分配给计算单元。当计算单元处理完成一个任务时,任务调度器120就会将此计算单元的序号再次放入空闲处理单元队列,等待分配给其下次任务。计算单元的初始数量会根据硬件资源以及每个单元的资源占用来决定。同时,为了提高并发性,每次判断同时取出多个任务,分给所有的空闲计算单元,提高处理效率。其中,第一并行计算单元130和第二并行计算单元140是根据特定应用需求,实现电路计算功能的单元。基于对多种应用的分析,第一并行计算单元130和第二并行计算单元140具有提炼后的固定接口,包括调度接口和数据接口。任务调度器120根据硬件资源以及应用算法的分、合两级实现划分,从数量上实例化最优比例的两级计算单元,即第一并行计算单元130和第二并行计算单元140,并且通过调度接口控制计算单元的触发与结束。计算单元通过数据接口实现数据的存取,数据控制器会通过仲裁以及缓存等机制,使得计算单元随时有数据可取。对于某些特定的或者复杂的应用,流处理或者流水线也会应用到计算单元中来。其中,在本发明实施例中采用层次化的存储方式,包括全局存储器150和用于存储中间结果的本地存储器160,还可包括计算单元中的寄存器堆,从而可以高效地处理数据,本发明利用一种层次化的存储架构。具体地,本发明将数据存储分为三个层次,全局存储、本地存储和寄存器堆,其中全局存储是存储大数据(全局数据)的存储单元,当计算开始时,数据控制器会将部分数据从全局存储搬移到本地存储,供计算单元使用。两级计算单元之间也存在共享的存储单元,也是通过本地存储的形式实现的。在计算单元中,会有存储计算运行当中的临时变量的存储单元,这时利用寄存器堆,能够快速的存取数据,从而保证计算的速度。其中,数据控制器110处于各级存储结构中间,通过对计算单元请求的响应,完成数据控制的任务。由于从全局存储到本地存储再到寄存器堆,都会有延时,因此,有效地利用预取技术使得数据流不出现断开状态十分重要。本发明根据优先级顺序,通过对计算单元吞吐率的估计,合理的预取一定数量的数据,达到数据消耗持续不断。另外,某些数据可以供给多个处理单元同时使用,这类数据通过公共数据通路进行传递,使得数据带宽更加合理利用。通过本发明实施例的上述通用的结构,设计者只需要关注任务划分和单个计算单元的逻辑实现,然后根据电路资源和实际需要进行多次复制。后续工作,包括存储结构、数据通路、调度模块,都会由架构自动生成,高效地完成并行计算的要求。如图2所示,为本发明实施例的采用本发明结构进行电路设计和实现的示意图。首先,在编程阶段101进行任务划分。在本发明中,设计者首先需要对任务需求进行分析,通过任务描述和软件分析,寻找任务中可以大量并行实现的部分。然后,将其划分为两类操作,“分”和“合”。所谓“分”操作,即将输入数据调整、划分给多个处理单元并行处理,每个处理单元通过一个或简或繁的计算函数,得到一个中间结果;“合”操作对多组中间结果进行多次归约,最后得到最终结果。通过一分一合自动完成了并行计算的设计。对于分合两步可并行的操作,预处理阶段需要给出分别的处理任务数量,作为任务调度器的输入数据。在硬件模型搭建102阶段,首先进行并行计算单元的实现,其中,计算单元的实现根据架构提供的调度接口和数据接口进行设计,主要是对任务划分中已经提炼出来的算法进行硬件描述。根据处理任务需要的性能要求,例如精度、处理时间,对软件算法进行一定程度的简化、对数据结构进行合理的调整,从而达到计算单元的高效性。设计完成后,根据工具对资源占用的分析,得到两步操作的计算单元个数的设置比例,达到两步计算单元的合理分配。接着,进行任务调度器的实现,本发明可以为设计者提供通用的任务调度器设计,设计者只需要提供两步并行操作的处理任务数量以及执行任务的处理单元数量即可。任务调度器会动态地监测计算单元的状态,同时保存未完成的计算任务的数量,来进行任务到处理单元的合理分配,充分地调用硬件资源、提高效率。当任务处理开始时,任务调度器首先判断任务是否全部处理完毕,如果有任务没有被处理,即任务队列非空,接着判断是否有计算单元处于空闲,即计算单元队列非空,如果全都成立,则将任务分配给处于队列首位置的计算单元。当计算单元计算完成后,将此单元序号存入队列的队尾。利用这种方式,可以保证计算单元资源的高效利用,提高处理速度。如图3所示,为本发明实施例的一种任务调度器的实现示意图。在本发明中,还为设计者提供了分层、高效的存储结构,包括全局存储、本地存储和寄存器堆。其中,对于全局存储,同一个任务所需数据是连续存放的,这样,设计者只需要根据应用需要,将数据首地址以及数据个数传递给数据控制器,就可以完成数据存取操作。为了提高数据吞吐效率,本架构提供数据预取以及通用数据通路,利用数据预取技术,可以有效的在不同的处理单元之间进行数据传递转换,避免部分处理单元没有数据可以操作;利用通用数据通路,可以减少对相同数据的读取次数,有效利用带宽。在完成了硬件模型搭建之后,既可以采用FPGA实现,也可以采用ASIC实现,并且优选地还可以进行优化加速。通过以上步骤实施并行应用的硬件电路设计,可以快速设计实际系统,缩短产品开发周期,提高产品竞争力。本发明的特点是,通过这种通用的电路设计架构,设计者不需要考虑模块的调度、数据传递、通信同步等问题,而可以专心于电路实现功能的研究,设计出单个计算单元,就可以通过复制得到多个单元,并且利用此架构快速搭建出系统。本发明另外一个特点是,在保证架构通用性的同时,基于分合思想,高效地提高处理性能,包括大量并行的调度、以及数据的预取和通用数据通路的设计。为了能够对本发明有更清楚的理解,以下就以具体的排序算法为例描述如何使用本发明的电路结构。如图4所示,为本发明实施例利用本发明的并行计算硬件电路结构对一种排序算法的快速实现框图。表1显示了利用本发明并行计算硬件电路结构快速实现时获得的性能结果。可以看出在一定资源的限制下,通过简单的模块规模扩大,就可以线性地获得加速比的提升。而这种加速比是可以和手工优化的结果想比拟的,而设计周期大大缩短。表1<table>tableseeoriginaldocumentpage7</column></row><table>利用本发明实施例提出的针对并行计算应用的硬件结构,可有效地掩盖了调度、同步和通信的设计思考,使设计者可以直接关注算法的计算部分的表述,因此能够降低并行电路设计复杂度,且能够很大程度缩小电路设计与实现的时间。另外,通过架构中自有的动态的调度和高效的数据存储,可以充分利用硬件资源,使得对应用的实现以一种高度并行的方式完成,加速了应用的计算时间,获得了能够和手工优化相比拟的性能。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。权利要求一种基于分合的思想的并行计算硬件电路结构,其特征在于,包括多个第一并行计算单元,用于进行分操作的计算;多个第二并行计算单元,用于进行合操作的计算;任务调度器,用于对所述多个第一并行计算单元和多个第二并行计算单元进行控制以使所述多个第一并行计算单元和多个第二并行计算单元同时进行分操作和合操作;全局存储器,用于存储全局数据;本地存储器,用于在计算开始后,存储所述多个第一并行计算单元计算的中间结果,并提供给所述多个第二并行计算单元;和数据控制器,用于为所述多个第一并行计算单元和所述任务调度器提供数据。2.如权利要求1所述的基于分合的思想的并行计算硬件电路结构,其特征在于,所述任务调度器对所述多个第一并行计算单元和多个第二并行计算单元进行控制包括所述任务调度器分别记录空闲的计算单元和等待计算的任务;如果有计算单元存在空闲,并且计算任务还有剩余时,则将计算任务分配给空闲的计算单元;如果计算单元处理完成一个任务,则所述任务调度器将该计算单元的序号再次放入空闲处理单元队列,等待分配给其下次任务。3.如权利要求2所述的基于分合的思想的并行计算硬件电路结构,其特征在于,所述任务调度器同时取出多个任务分给对应的多个空闲的计算单元。4.如权利要求1所述的基于分合的思想的并行计算硬件电路结构,其特征在于,所述第一并行计算单元和第二并行计算单元包括调度接口和数据接口,所述调度接口用于接收所述任务调度器的指令,所述数据接口用于存取数据。5.如权利要求1所述的基于分合的思想的并行计算硬件电路结构,其特征在于,所述第一并行计算单元和第二并行计算单元中还包括寄存器堆。6.如权利要求1所述的基于分合的思想的并行计算硬件电路结构,其特征在于,当计算开始时,所述数据控制器将部分数据从所述全局存储搬移到所述本地存储器,供所述第一并行计算单元和第二并行计算单元使用。7.如权利要求6所述的基于分合的思想的并行计算硬件电路结构,其特征在于,所述数据控制器根据优先级顺序,通过对计算单元吞吐率的估计,合理的预取一定数量的数据以保证数据消耗持续不断。8.如权利要求6所述的基于分合的思想的并行计算硬件电路结构,其特征在于,通过公共数据通路将公共数据同时提供给多个计算单元。全文摘要本发明提出一种基于分合的思想的并行计算硬件电路结构,包括多个第一并行计算单元和多个第二并行计算单元;任务调度器,用于对所述多个第一并行计算单元和多个第二并行计算单元进行控制;全局存储器,用于存储全局数据;本地存储器,用于在计算开始后,存储所述多个第一并行计算单元计算的中间结果,并提供给所述多个第二并行计算单元;和数据控制器,用于为所述多个第一并行计算单元和所述任务调度器提供数据。利用本发明实施例提出的针对并行计算应用的硬件结构,可有效地掩盖了调度、同步和通信的设计思考,使设计者可以直接关注算法的计算部分的表述,因此能够降低并行电路设计复杂度,且能够很大程度缩小电路设计与实现的时间。文档编号G06F9/38GK101833439SQ201010153840公开日2010年9月15日申请日期2010年4月20日优先权日2010年4月20日发明者单羿,杨华中,汪玉申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1