采用Xilinx Zynq SoC 为云计算提速.docx

上传人:lao****ou 文档编号:844503 上传时间:2024-06-17 格式:DOCX 页数:7 大小:122.35KB
下载 相关 举报
采用Xilinx Zynq SoC 为云计算提速.docx_第1页
第1页 / 共7页
采用Xilinx Zynq SoC 为云计算提速.docx_第2页
第2页 / 共7页
采用Xilinx Zynq SoC 为云计算提速.docx_第3页
第3页 / 共7页
采用Xilinx Zynq SoC 为云计算提速.docx_第4页
第4页 / 共7页
采用Xilinx Zynq SoC 为云计算提速.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《采用Xilinx Zynq SoC 为云计算提速.docx》由会员分享,可在线阅读,更多相关《采用Xilinx Zynq SoC 为云计算提速.docx(7页珍藏版)》请在第一文库网上搜索。

1、采用Xi1inxZynqSoC为云计算提速新颖的可重配置鲤件加速器可加速基于MapReduce编程框架的应用处理。流视频、社交网络和云计算等新兴Web应用亟需能容纳数千台服务器的仓库规模的数据中心。在数据中心和其它计算机集群中,用于处理大数据集的主要编程框架之一即为MapReduce框架1。MapReduce是一种运用大量节点来处理大数据集的编程模型。用户负责设定“Map”和“Reduce”功能,然后由MapReduce调度器将任务分配给处理矍。MapReduce框架的主要优势之一在于,其能托管在由不同类型处理器构成的多个异构集群中。大部分数据中心都纷纷采用高性能的通用型器件,如英特尔至强(I

2、nte1Xeon)AMD皓龙(AMDOPteron)和IBMPOWer处理器等。但是,即使在丽禾属于高计超集型而属于高I/O密集型的时候,这些处理器也会消耗大量的电力。为了降低数据中心的功耗,微服务器作为一种替代性平台近期倍受关注。这类低成本服务器通常采用燧式系统中使用的低功耗处理器,如迪1回处理器等。微服务器主要针对轻量级或并行应用,处理此类应用最行之有效的方法是使用在节点间拥有充足I/O(而非拥有高性能处理器)的单个服务器。微服务器方案具有众多优势,如可减少购置成本、缩小占用面积,并能降低特定应用类型的功耗。在过去的几年里,SeaMicro和Ca1Xeda等几家厂商已开发出基于嵌入式处理器

3、的微服务器。但是,MaPRedUCe框架会占用嵌入式处理器的多种资源,从而会降低运行在这些平台上的云计算应用的总体性能。为了克服这个问题,我们的团队已为MapReduce框架开发出一种能在全面可编程平台上与ARMIP核实现高效整合的硬件加速单元。为了开发并评估所提议的方案,我们选用了开发板上集成有双核Corte-A9处理器的赛灵思ZYn承-7000A11Programmab1eSoC0MapReduce硬件加速器单元MapReduce加速单元负责处理Reduce任务的高效实现。其主要工作是合并来自各个处理器的中间键/值对,并为插入新键和更新(累计)键/值对提供快速途径。我们将MaPRedUCe

4、加速器作为协处理器来实现,可通过共享总线作为多核处理器的扩充。图1为多核SoC中加速器方框图。如图所示,我们已在配备有一对ARMCortex-9IP核的ZynqSOC中整合了硬件加速器单元。每个内核都有其自己的指令和数据高速缓存,而每种高速缓存都可使用共享互连网络与外设进行逋值。该加速器通过连接到互连网络的高性能总线实现与处理器的通信。处理器通过访问加速器的特定越巡,给出需要更新到MaPRedUCe加速器的键和值。MaP任务结束后,加速器即累加了所有键的值。处理器仅需将该键发送给加速器并读取寄存器中的最终值,即可检索该键的最终值。通过这种方法,所提议的架构就能向包含需要更新的键/值对发送无阻塞

5、交易,从而加速MaPRedUCe处理。编程框架图2为使用硬件加速器的MaPRedUCe应用编程框架。在原始代码中,MaP级发射键/值对,而Reduce级则搜索该键并消耗若干CPU时钟周期的时间来更新(累加)新值。使用MaPRedUCe加速器的情况则与此相反,MaP级仅发射键/值对,而MaPRCdUCe加速器则合并所有的键/值对并更新相关条目,因而无需采用Reduce功能。OriginaICode:Map(Emit_Intermediate(key,va1ue);)一Reduce(key,va1ue)search(key);update(key,va1ue);)Jkcce1arasrCod6:M

6、apNEmit_Intermediate_Acce1(key,va1ue);-Emit_Intermediate_Acce1(keyzva1ue)(-mmapped_addr=mmap(MapReduce_Acce1);send(mmapped_addr+0x4,key);send(mmapped_addr+0x8,va1ue);)一BE吨次旦图2编程框架-SHaSh函数可加速键的索引进程,但若两个键具有相同的HaSh值,则可能造成冲突。我们选择了CUCkooHaShing作为解决HaSh冲突的最佳途径。运行在1之下的应用层与硬件加速器之间的通信通过使用存储器映射(mmap)系统调用来进行。m

7、map系统调用能将指定的内核存储器区域映射到用户层,因而用户能根据存储器映射过程中提供的属性对其进行读取或写入操作。我们使用控制单元来访问这些寄存器和串行化键/值组件的更新。键/值对存储在能根据应用要求进行配置的存储器单元中。该存储器模块包含键、值和可用作标签的部分数位。这些标签用于标示存储器线路是否为空以及是否有效。为了加速键的索引进程,可用HaSh模块将初始键转换为存储器模块的地址。在当前配置中,我们设计的存储器结构可容纳2千个键/值对。每个键的长度可达到64位(8个字符),值的长度达32位。存储器结构的总体大小为2KX104位。第一个64位存储的键用于比较使用Hash函数时我们究竟是命中

8、还是错失;接下来的8位用于存储标签;再之后的32位则用于存储该值。在当前的配置中,最大键值为64位,HaSh函数用于将键(64位)映射到存储器地址(12位)。CuckooHashingHash函数能加速键的索引进程,但在两个不同的键有着相同Hash值的情况下,也可能造成冲突。为了解决这一问题,我们选择了CUCk。HaShing作为解决HaSh冲突的最佳途径。CuckooHaShing2使用两个(而非一个)HaSh函数。在插入新的条目时,这个条目就会存储在第一个HaSh键的位置。如果该位置被占用,就会将旧条目移到自己的第二个HaSh地址。这个过程会循环往复,直到找到空闲地址为止。该复法可提供恒定

9、的查找时间0(1)(查找只要求检查HaSh表中的两个位置),而插入时间则取决于高速缓存的大小0(n)。如果该流程应进入无限循环,HaSh表就进行重建。使用T1和T2两个表能实现CuckooHashing算法。I1和T2分别对应一种HaSh函数,每种大小为人每个表均使用不同的HaSh函数(分别为h1和h2)来创建T1和T2的地址。每个组件X分别经HaSh函数h1或h2运算后,存储在口或T2中,即有T1h1(x)或T2h2(x).这样的查找方法简单明了。对每一个我们需要查找的组件X,我们仅需分别使用Hash函数h1和h2检查T1和T2表中的两个可能位置。要插入组件X,我们需要检查T1h1(x)是否

10、为空。如果为空,就可以把组件X存储在这个位置。如果不为空,我们就用X替换T1h1(x)中已经存在的组件y.然后再检查T2h2(y)是否为空。如果为空,我们将组件y存储在这个位置。如果不为空,就用y替换T2h2(y)中的组件z。然后我们再尝试把Z存储到T1h1(z)中,如此往复,直至找到一个空闲位置。根据原始CUCkooHaShirIg文章2的说明,如果在一定次数的尝试之后未能找到空闲位置,则建议对表中的所有组件进行重新处理。在我们当前实现的软件中,每当运算进入这种环路时,软件就会停止运行并将0返回给函数调用。然后该函数调用可能会发起重新HaSh处理,或者可能选择像原始代码中的做法一样,向软件存

11、储器结构中添加特定的键。我们将CuckooHashing用于图1所示的MapReduce加速器。我们使用了两个B1oCkRAM来存储T1和T2两个表的条目。这些BRAM可存储键、值和标签。在标签字段中使用1位用于标示特定的列是否有效。使用两个基于简单X里函数的Hash函数将键映射到BRAM的地址。每次需要访问BRAM地址时,就需要使用Hash表来创建地址,然后根据两个比四的指示来判断能否命中BRAM(即创建的键与RAM中存储的键一样,且有效位为1)。控制单元可协调对存储器的访问。我们将控制单元实现为可执行CUCk0。HaShing的有限状态机(FSM)。性能评估我们已在ZynqSOC中实现了所

12、提议的架构。具体而言,我们将PhOeniXMaPRedUCe框架映射到1inUX3下的嵌入式ARMIP核中。每当处理器需要更新键/值对的时候,它们就会通过特定的函数调用功能发送信息。为了评估本系统的性能,我们使用了PhoeniX框架提供的三种应用,经修改后利用硬件加速器运行。这三种应用分别是字数统计、线性回归和直方图。所提议的方案具有可配置性,能根据应用需求进行微调。为了评估PhoeniXMaPRedUCe框架应用的性能,我们已为加速器配置了4K容量的存储器单元(可存储4,096个键/值对,每个BRAM存储容量为2K)。每个键的大小最大可为8字节。表1显示了MaPRedUCe加速器的可编程逻辑

13、资源。正如您能看到的,加速器基本上由存储器组成,而控制单元则用于有限状态机,HaSh功能只占据器件的一小部分。资源数量所占百分比S1ice寄存器8431%S1ice1UTs9031%B1ockRAMs2921%fzz泣Jjj表可编程逻辑资源分配少-图3将原始应用和采用MaPRedUCe加速器应用的执行时间进行了比较。这两次测量均以赛灵思ZynqSoC设计为基础。MaPRedUCe应用的执行时间在字数统计应用中,原始应用里MaP的任务是对字进行识别,然后提交给RedUCe任务。RedUCe任务随即收集所有的键/值对,并累积每个键的值。在加速器应用中,MaP的任务是识别字,然后通过高性能AXI总线

14、将数据提交给MaPRedUCe加速器单元。将键/值对存储在寄存器(每个处理器均不相同)中,然后加速器通过访问存储器结构来累积每个键的值。为处理器减负执行时间缩短的原因在于,在原始代码中,RedUCe任务必须首先加载键/值表,再在全表范围内搜索需要的键。然后,在完成值的累积后,RedUCe任务必须将键存回存储器。在使用MaPRedUCe加速器后,我们可将该处理器从这项任务中释放出来,从而缩短MaPRedUCe应用的总体执行时间。CuckooHaShing(O(D)让键的搜索工作在加速器中完成,同时处理器在键/值对的更新过程中通畅无阻。如图3所示,系统的总体速度提升了1.23倍到18倍不等。具体加

15、速情况取决于每项应用的特征。在映射函数较为复杂的情况下,MaPRedUCe加速器的加速性能就不那么明显了。在映射函数较为简单且占用的总体执行时间较少的应用中,加速性能比较显著,因为有大量总体执行时间可用于MaP和RedUCe功能之间的通信。因此在这种情况下,MaPRCdUCe加速器能提供非常明显的加速效果。此外,MaPRedUCe加速器还能在处理器中创建较少的新线程,从而减少环境切换次数和执行时间。例如,在字数统计应用中,平均环境切换次数就从88次降到60次。MapReduce框架能广泛应用于多核SoC和云计算应用的编程框架。对于赛灵思ZynqSoC等多核SoC平台以及基于MapReduce框架的云计算应用来说,我们提议的硬件加速器能通过为这些应用的Reduce任务加速来降低总体执行时间。如欲了解有关如何运用ZynqSoC平台为云计算加速的更多详细,敬请联系首席作者ChriStoforoSK些hris博士,也可访问。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服