版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
采用XilinxZynqSoC为云计算提速新颖的可重配置硬件加速器可加速基于MapReduce编程框架的应用处理。流视频、社交网络和云计算等新兴Web应用亟需能容纳数千台服务器的仓库规模的数据中心。在数据中心和其它计算机集群中,用于处理大数据集的主要编程框架之一即为MapReduce框架[1]。MapReduce是一种运用大量节点来处理大数据集的编程模型。用户负责设定“Map”和“Reduce”功能,然后由MapReduce调度器将任务分配给处理器。MapReduce框架的主要优势之一在于,其能托管在由不同类型处理器构成的多个异构集群中。大部分数据中心都纷纷采用高性能的通用型器件,如英特尔至强(IntelXeon)、AMD皓龙(AMDOpteron)和IBMPower处理器等。但是,即使在应用不属于高计算密集型而属于高I/O密集型的时候,这些处理器也会消耗大量的电力。为了降低数据中心的功耗,微服务器作为一种替代性平台近期倍受关注。这类低成本服务器通常采用嵌入式系统中使用的低功耗处理器,如ARM®处理器等。微服务器主要针对轻量级或并行应用,处理此类应用最行之有效的方法是使用在节点间拥有充足I/O(而非拥有高性能处理器)的单个服务器。微服务器方案具有众多优势,如可减少购置成本、缩小占用面积,并能降低特定应用类型的功耗。在过去的几年里,SeaMicro和Calxeda等几家厂商已开发出基于嵌入式处理器的微服务器。但是,MapReduce框架会占用嵌入式处理器的多种资源,从而会降低运行在这些平台上的云计算应用的总体性能。为了克服这个问题,我们的团队已为MapReduce框架开发出一种能在全面可编程平台上与ARMIP核实现高效整合的硬件加速单元。为了开发并评估所提议的方案,我们选用了开发板上集成有双核Cortex-A9处理器的赛灵思Zynq®-7000AllProgrammableSoC。MapReduce硬件加速器单元
MapReduce加速单元负责处理Reduce任务的高效实现。其主要工作是合并来自各个处理器的中间键/值对,并为插入新键和更新(累计)键/值对提供快速途径。我们将MapReduce加速器作为协处理器来实现,可通过共享总线作为多核处理器的扩充。图1为多核SoC中加速器方框图。如图所示,我们已在配备有一对ARMCortex™-A9IP核的ZynqSoC中整合了硬件加速器单元。每个内核都有其自己的指令和数据高速缓存,而每种高速缓存都可使用共享互连网络与外设进行通信。该加速器通过连接到互连网络的高性能总线实现与处理器的通信。处理器通过访问加速器的特定寄存器,给出需要更新到MapReduce加速器的键和值。Map任务结束后,加速器即累加了所有键的值。处理器仅需将该键发送给加速器并读取寄存器中的最终值,即可检索该键的最终值。通过这种方法,所提议的架构就能向包含需要更新的键/值对发送无阻塞交易,从而加速MapReduce处理。编程框架
图2为使用硬件加速器的MapReduce应用编程框架。在原始代码中,Map级发射键/值对,而Reduce级则搜索该键并消耗若干CPU时钟周期的时间来更新(累加)新值。使用MapReduce加速器的情况则与此相反,Map级仅发射键/值对,而MapReduce加速器则合并所有的键/值对并更新相关条目,因而无需采用Reduce功能。Hash函数可加速键的索引进程,但若两个键具有相同的Hash值,则可能造成冲突。我们选择了CuckooHashing作为解决Hash冲突的最佳途径。运行在Linux之下的应用层与硬件加速器之间的通信通过使用存储器映射(mmap)系统调用来进行。mmap系统调用能将指定的内核存储器区域映射到用户层,因而用户能根据存储器映射过程中提供的属性对其进行读取或写入操作。我们使用控制单元来访问这些寄存器和串行化键/值组件的更新。键/值对存储在能根据应用要求进行配置的存储器单元中。该存储器模块包含键、值和可用作标签的部分数位。这些标签用于标示存储器线路是否为空以及是否有效。为了加速键的索引进程,可用Hash模块将初始键转换为存储器模块的地址。在当前配置中,我们设计的存储器结构可容纳2千个键/值对。每个键的长度可达到64位(8个字符),值的长度达32位。存储器结构的总体大小为2Kx104位。第一个64位存储的键用于比较使用Hash函数时我们究竟是命中还是错失;接下来的8位用于存储标签;再之后的32位则用于存储该值。在当前的配置中,最大键值为64位,Hash函数用于将键(64位)映射到存储器地址(12位)。CuckooHashing
Hash函数能加速键的索引进程,但在两个不同的键有着相同Hash值的情况下,也可能造成冲突。为了解决这一问题,我们选择了CuckooHashing作为解决Hash冲突的最佳途径。CuckooHashing[2]使用两个(而非一个)Hash函数。在插入新的条目时,这个条目就会存储在第一个Hash键的位置。如果该位置被占用,就会将旧条目移到自己的第二个Hash地址。这个过程会循环往复,直到找到空闲地址为止。该算法可提供恒定的查找时间O(1)(查找只要求检查Hash表中的两个位置),而插入时间则取决于高速缓存的大小O(n)。如果该流程应进入无限循环,Hash表就进行重建。使用T1和T2两个表能实现CuckooHashing算法。TI和T2分别对应一种Hash函数,每种大小为r。每个表均使用不同的Hash函数(分别为h1和h2)来创建T1和T2的地址。每个组件x分别经Hash函数h1或h2运算后,存储在T1或T2中,即有T1[h1(x)]或T2[h2(x)]。这样的查找方法简单明了。对每一个我们需要查找的组件x,我们仅需分别使用Hash函数h1和h2检查T1和T2表中的两个可能位置。要插入组件x,我们需要检查T1[h1(x)]是否为空。如果为空,就可以把组件x存储在这个位置。如果不为空,我们就用x替换T1[h1(x)]中已经存在的组件y。然后再检查T2[h2(y)]是否为空。如果为空,我们将组件y存储在这个位置。如果不为空,就用y替换T2[h2(y)]中的组件z。然后我们再尝试把z存储到T1[h1(z)]中,如此往复,直至找到一个空闲位置。根据原始CuckooHashing文章[2]的说明,如果在一定次数的尝试之后未能找到空闲位置,则建议对表中的所有组件进行重新处理。在我们当前实现的软件中,每当运算进入这种环路时,软件就会停止运行并将0返回给函数调用。然后该函数调用可能会发起重新Hash处理,或者可能选择像原始代码中的做法一样,向软件存储器结构中添加特定的键。我们将CuckooHashing用于图1所示的MapReduce加速器。我们使用了两个BlockRAM来存储T1和T2两个表的条目。这些BRAM可存储键、值和标签。在标签字段中使用1位用于标示特定的列是否有效。使用两个基于简单XOR函数的Hash函数将键映射到BRAM的地址。每次需要访问BRAM地址时,就需要使用Hash表来创建地址,然后根据两个比较器的指示来判断能否命中BRAM(即创建的键与RAM中存储的键一样,且有效位为1)。控制单元可协调对存储器的访问。我们将控制单元实现为可执行CuckooHashing的有限状态机(FSM)。性能评估
我们已在ZynqSoC中实现了所提议的架构。具体而言,我们将PhoenixMapReduce框架映射到Linux3下的嵌入式ARMIP核中。每当处理器需要更新键/值对的时候,它们就会通过特定的函数调用功能发送信息。为了评估本系统的性能,我们使用了Phoenix框架提供的三种应用,经修改后利用硬件加速器运行。这三种应用分别是字数统计、线性回归和直方图。所提议的方案具有可配置性,能根据应用需求进行微调。为了评估PhoenixMapReduce框架应用的性能,我们已为加速器配置了4K容量的存储器单元(可存储4,096个键/值对,每个BRAM存储容量为2K)。每个键的大小最大可为8字节。表1显示了MapReduce加速器的可编程逻辑资源。正如您能看到的,加速器基本上由存储器组成,而控制单元则用于有限状态机,Hash功能只占据器件的一小部分。图3将原始应用和采用MapReduce加速器应用的执行时间进行了比较。这两次测量均以赛灵思ZynqSoC设计为基础。
在字数统计应用中,原始应用里Map的任务是对字进行识别,然后提交给Reduce任务。Reduce任务随即收集所有的键/值对,并累积每个键的值。在加速器应用中,Map的任务是识别字,然后通过高性能AXI总线将数据提交给MapReduce加速器单元。将键/值对存储在寄存器(每个处理器均不相同)中,然后加速器通过访问存储器结构来累积每个键的值。为处理器减负
执行时间缩短的原因在于,在原始代码中,Reduce任务必须首先加载键/值表,再在全表范围内搜索需要的键。然后,在完成值的累积后,Reduce任务必须将键存回存储器。在使用MapReduce加速器后,我们可将该处理器从这项任务中释放出来,从而缩短MapReduce应用的总体执行时间。CuckooHashing(O(1))让键的搜索工作在加速器中完成,同时处理器在键/值对的更新过程中通畅无阻。如图3所示,系统的总体速度提升了1.23倍到1.8倍不等。具体加速情况取决于每项应用的特征。在映射函数较为复杂的情况下,MapReduce加速器的加速性能就不那么明显了。在映射函数较为简单且占用的总体执行时间较少的应用中,加速性能比较显著,因为有大量总体执行时间可用于Map和Reduce功能之间的通信。因此在这种情况下,MapReduce加速器能提供非常明显的加速效果。此外,MapReduce加速器还能在处理器中创建较少的新线程,从而减少环境切换次数和执行时间。例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 读书安全班会
- 集团公司行政上半年工作总结
- 五年级班主任教师的工作总结
- 会计求职信集锦八篇
- 班主任个人述职报告范文集合15篇
- 七年级生物教学工作总结10篇
- 销售培训 讲师课件
- 三八妇女节慰问信范文六篇
- 幼儿五一劳动节发言稿
- 酒店个人年终工作总结范文集锦
- 2023年水利部太湖流域管理局所属事业单位招聘20人(共500题含答案解析)笔试历年难、易错考点试题含答案附详解
- GB/T 42131-2022人工智能知识图谱技术框架
- 悦纳自我珍爱生命班会公开课一等奖市赛课获奖课件
- 自然的力量红壤黑土
- 应急救援培训课件
- 应急救援预案演练效果评价
- 隐胶缝蜂窝铝板幕墙施工工艺
- 景观园林绿化施工设计及养护
- 正常抽样标准(AQL)
- 《家校共育问题研究开题报告(附提纲)5200字》
- YY/T 0471.2-2004接触性创面敷料试验方法 第2部分:透气膜敷料水蒸气透过率
评论
0/150
提交评论