基于MapReduce编程模型的多核处理器架构的制作方法

文档序号:9844067阅读:571来源:国知局
基于MapReduce编程模型的多核处理器架构的制作方法
【技术领域】
[0001]本发明属于多核处理器加速技术领域,特别是涉及一种基于MapReduce编程模型的多核处理器架构。
【背景技术】
[0002]近年来,物联网技术飞速发展,它将各种传感器和智能处理相结合,利用云计算、模式识别等各种智能技术,从传感器获得的海量信息中分析、加工和处理出有意义的数据,以适应商业、安全、城市管理等不同应用的需求。而随着物联网应用领域的逐步扩大和深入,各种传感器的数量呈几何级增长,同时采集的信息量也必然呈爆炸性增长,随之而来的是海量大数据的处理。目前,物联网多采用基于大型服务器和数据中心的集中式存储和处理模式,即传感器节点之负责采集数据,并将数据集中存储在一个大型的数据中心,再由服务器进一步对数据进行分析处理。然而与服务器相关的硬件资源的承受能力都是有一定范围的,为了让服务器能安全可靠的运行,只有通过不断增加服务器的数量和更新更高级的服务器,或者限制同时访问服务器的数量,前者需要花费大量的成本和功耗,而后者是以牺牲性能为代价,显然二者都不是很好的解决方法。
[0003]因此,去中心化的物联网的概念应运而生,它是一种以节点设备为主的,自治的物联网,它将云计算中以服务器或者PC机为计算节点的模式转变成以嵌入式设备为计算节点的模式,从而实现高效节能的物联网。另一方面,MapReduce是目前在大数据处理中广泛采用的并行编程模型,它最初由Google公司提出,借鉴了函数式编程的思想,将大规模集群上的复杂的并行计算高度的抽象到了两个函数:Map函数和Reduce函数。Map函数负责对任务的分解,而Reduce函数则是将分解的任务进行合并。MapReduce并行编程模型的特点是简单易学,能够屏蔽底层实现细节从而降低并行编程难度,让程序员从繁杂的并行编程工作中解脱出来,轻松地编写简单、高效的并行程序。
[0004]基于上述硬件平台和编程模型的发展趋势,如何在嵌入式平台实现高效的MapReduce处理,即MapReduce编程模型在嵌入式平台上的硬件加速问题,成为物联网领域急需解决的问题。目前已有的加速方案主要有三种:一是通过通用嵌入式多核处理器(如ARM系列多核处理器等)加速MapReduce处理;二是通过GPU和商用的异构多核处理器(如IBM的Cel I多核处理器等)加速MapReduce处理;三是通过FPGA硬件实现MapReduce的处理。上述方案一和方案二都是采用商用的多核处理器对MapReduce进行加速,不管是通用的多核处理器还是GPU,Cell处理器等异构多核处理器,都不是专门为MapReduce而设计开发的,因此使用这类方案加速MapReduce应用的效果有限,且功耗较高。上述方案三采用硬件电路实现MapReduce应用,性能较处理器的软件方案会有所提高,但硬件的开发周期长,且一旦应用有变化,硬件需要重新设计,非常不灵活。
[0005]不同于上述三种MapReduce的嵌入式加速方案,本发明公开了一种基于MapReduce编程模型的专用多核处理器架构。本发明的多核处理器架构相比于通用处理器和GPU等商用的异构多核处理器更适合MapReduce自身的数据流,可提高海量数据的处理速度;相比于FPGA方案,本发明的多核处理器方案具有可软件编程优点,易于开发和使用。

【发明内容】

[0006]本发明所要解决的技术问题是针对通用处理器在进行大数据计算时处理速度慢的问题,提出了一种基于MapReduce编程模型的多核处理器架构,用于加速计算节点处理大数据流的速度,并简化计算节点并行编程的复杂度。
[0007]本发明为解决上述技术问题,采用的技术方案如下:
基于MapReduce编程模型的多核处理器架构,包含Spl it模块、全局存储器、若干MapReduce的块流水线模块和Merge模块;
所述Split模块用于将输入数据暂存至全局存储器中,将其分割成数据块分配给每一个MapReduce的块流水线模块,并控制各个MapReduce的块流水线模块工作;
所述MapReduce的块流水线模块用于对分割好的数据块进行流水线处理,根据MapReduce编程模型的定义将输入的裸数据处理转变成〈key ,values〉对的形式后输出至所述Merge模块;
所述Merge模块用于将各个MapReduce的块流水线模块的输出的〈key,value〉对中具有相同key值的结果合并并输出。
[0008]作为本发明基于MapReduce编程模型的多核处理器架构进一步的优化方案,所述MapReduce的块流水线模块包含Map处理器、Reduce处理器和两个数据缓存,所述Map处理器、Reduce处理器和两个数据缓存通过共享的AHB总线进行连接;
所述两个数据缓存用于接收所述Split模块分配的数据;
所述Map处理器用于将接收了 Spl it模块分配数据的数据缓存中的裸数据根据MapReduce编程模型转化为〈key,value〉对,并触发所述Reduce处理器继续对转换过后的数据缓存中的〈key,value〉对进行后续处理;
所述Reduce处理器用于将数据缓存中经所述Map处理器处理过的〈key,value〉对中相同key值的数据对进行合并,并转化为〈key, values〉对的形式。
[0009]作为本发明基于MapReduce编程模型的多核处理器架构进一步的优化方案,所述Merge模块包含一个总Merge处理器和若干个子Merge处理器,每个子Merge处理器与至少两个MapReduce块流水线模块中的数据缓存通过共享的数据总线相连,总Merge处理器通过共享的数据总线与全局存储器以及各个子Merge处理器相连;
所述子Merge处理器用于将与之相连的多个数据缓存中经所述Reduce处理器处理过的具有相同key值的〈key,values〉对进行合并,并通过共享的数据总线,将合并后的〈key,values〉对存放在全局存储器中;
所述总Merge处理器用于将全局存储器中经所述子Merge处理器合并的〈key,values)对中具有相同key值的〈key, values〉对进行合并,并将合并后的结果输出。
[00?0]作为本发明基于MapReduce编程模型的多核处理器架构进一步的优化方案,所述Spl it模块、Map处理器、Reduce处理器、总Merge处理器、以及各个子Merge处理器通过一条专用的控制总线相连;
所述Spl it模块通过所述控制总线以消息传递的形式通知各个MapReduce块流水线中的Map处理器开始工作; 所述Map处理器通过所述控制总线以消息传递的形式通知Reduce处理器开始工作;所述Reduce处理器通过所述控制总线以消息传递的形式通知各个子Merge处理器开始工作;
所述各个子Merge处理器通过所述控制总线以消息传递的形式通知总Merge处理器开始工作。
[OO11 ]作为本发明基于MapReduce编程模型的多核处理器架构进一步的优化方案,所述两个数据缓存以乒乓的方式与所述Map处理器和Reduce处理器协同工作。
[0012]本发明采用以上技术方案,具有以下技术效果:
1.本发明采用分布式的多核处理器架构实现MapReduce编程模型的应用,相对通用的多核处理器,本发明的多核处理器架构更符合MapReduce模型分布式的数据流特征,可有效提高处理器处理MapReduce应用的速度;
2.本发明采用可编程的处理器作为执行MapReduce模型中Split、Map、Reduce和Merge等函数模块的处理单元,相对FPGA等硬件实现方式,本发明的多核处理器方案更具灵活性;
3.本发明的MapReduce块流水线模块采用基于数据块的流水线处理技术,并采用乒乓结构的数据缓存,实现了数据块的流水式处理;
4.本发明的Merge模块采用多级Merge方案,先由子Merge处理器分组处理,再由总Merge处理器处理,可有效提高Merge模块的吞吐率;
5.本发明采用数据与控制相分离的核间互连结构,通过多层次的AHB总线传输数据,通过专用的核间互连传递核间控制信息,可有效提高数据的吞吐率。
【附图说明】
[0013]图1为基于MapReduce编程模型的多处理器片上系统架构流程图;
图2为Split模块架构和数据流的示意图;
图3为MapReduce块流水线的架构示意图;
图4为采用MapReduce编程模型的WordCount实例示意图;
图5为后端模块的架构示意图;
图6为后端模块的数据执行流程图。
【具体实施方式】
[0014]下面参照附图并结合具体应用程序对本发明作进一步的描述。
[0015]参见图1,本发明公开了一种基于MapReduce编程模型的多核处理器架构,通过分层互连结构将处理器集群连接起来。如图1所示,所述处理器主要由三部分组成:Split模块对输入数据进行分割及任务分配;由多条块流水线组成的MapReduce块流水线(MapReduceBlock-Pipe,简称MRBP)模块将分割好的数据块处理成MapReduce编程模型定义的〈key,value〉数据对,其中key代表关键值,value代表该关键值的个数;后端Merge模块将MRBP模块输出的〈key, value〉数据对结果进行合并,将所有相同key值的数据对合并成一个〈key,value〉数据对。
[0016]具体地,所述多核处理器中的Split模块用于将输入的数据从主系统中传输到MRBP模块,同时对MRBP模块中的多条块流水线进行调度。所述多核处理器工作时,Spl i t模块将输入数据传输到全局存储器,并根据所述多核处理器的架构配置参数(如:块流水线的条数,每条块流水线中缓存的大小等)将输入数据分割成若干小的数据块,分配给MRBP模块中各条块流水线中的缓存,并触发MRBP模块中的块流水线开始工作JRBP模块是所述多核处理器的核心处理单元,根据MapReduce编程模型,MRBP模块将输入的裸数据处理成〈key,values〉数据对的形式。最后,Merge模块将所述MRBP模块的处理结果进行处理,将MRBP模块结果中具有相同key值的〈key ,values〉数据对合并并输出。
[0017]为了提高数据块的处理速度,并简化系统的实现,本发明的多核处理器采用多条AHB总线将Spl it模块、MRBP模块和后端Merge模块连接起来,负责传输MapReduce数据。同时,为了减轻所述AHB总线上的数据拥堵,本发明将上述Spl i t模块、MRBP模块和后端Merge模块之间的控制信息与MapReduce处理的数据流分开,由另一条专用的处理器间的通信总线来传输各处理器之间的控制信息。图2-图6从细节上更为详细地描述了本发明的模块架构。
[0018]参见图2,详细描述了本发明的Split模块的架构和数据流,其核心是S
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1