你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

采用 Xilinx Zynq SoC 为云计算提速

发布者:jackzhang 时间:2014-01-03 21:15:29

作者:Christoforos Kachris
塞萨斯德谟克里特大学研究员
ckachris@ee.duth.gr
Georgios Sirakoulis
塞萨斯德谟克里特大学教授
gsirak@ee.duth.gr
Dimitrios Soudris
雅典国家技术大学 (NTUA) 教授
dsoudris@microlab.ntua.gr


新颖的可重配置硬件加速器可加速基于MapReduce 编程框架的应用处理。


流视频、社交网络和云计算等新兴 Web 应用亟需能容纳数千台服务器的仓库规模的数据中心。在数据中心和其它计算机集群中,用于处理大数据集的主要编程框架之一即为 MapReduce 框架 [1]。MapReduce 是一种运用大量节点来处理大数据集的编程模型。用户负责设定“Map”和“Reduce”功能,然后由 MapReduce 调度器将任务分配给处理器。

MapReduce框架的主要优势之一在于,其能托管在由不同类型处理器构成的多个异构集群中。大部分数据中心都纷纷采用高性能的通用型器件,如英特尔至强 (Intel Xeon)、AMD 皓龙(AMD Opteron)和 IBM Power 处理器等。但是,即使在应用不属于高计算密集型而属于高I/O密集型的时候,这些处理器也会消耗大量的电力。

为了降低数据中心的功耗,微服务器作为一种替代性平台近期倍受关注。这类低成本服务器通常采用嵌入式系统中使用的低功耗处理器,如ARM处理器等。微服务器主要针对轻量级或并行应用,处理此类应用最行之有效的方法是使用在节点间拥有充足 I/O(而非拥有高性能处理器)的单个服务器。微服务器方案具有众多优势,如可减少购置成本、缩小占用面积,并能降低特定应用类型的功耗。

在过去的几年里,SeaMicro 和Calxeda 等几家厂商已开发出基于嵌入式处理器的微服务器。但是,MapReduce 框架会占用嵌入式处理器的多种资源,从而会降低运行在这些平台上的云计算应用的总体性能。

为了克服这个问题,我们的团队已为 MapReduce 框架开发出一种能在全面可编程平台上与 ARM IP 核实现高效整合的硬件加速单元。为了开发并评估所提议的方案,我们选用了开发板上集成有双核 Cortex-A9处理器的赛灵思 Zynq-7000 All Programmable SoC

MapReduce 硬件加速器单元MapReduce 加速单元负责处理Reduce 任务的高效实现。其主要工作是合并来自各个处理器的中间键 / 值对,并为插入新键和更新(累计)键 / 值对提供快速途径。我们将MapReduce 加速器作为协处理器来实现,可通过共享总线作为多核处理器的扩充。图 1 为多核 SoC 中加速器方框图。

图1 - MapReduce 硬件加速器的方框图


编程框架


图 2 为使用硬件加速器的 MapReduce应用编程框架。在原始代码中,Map级发射键 / 值对,而 Reduce 级则搜索该键并消耗若干 CPU 时钟周期的时间来更新(累加)新值。使用 MapReduce 加速器的情况则与此相反,Map 级仅发射键 / 值对,而MapReduce 加速器则合并所有的键 /值对并更新相关条目,因而无需采用Reduce 功能。





运行在 Linux 之下的应用层与硬件加速器之间的通信通过使用存储器映射 (mmap) 系统调用来进行。mmap系统调用能将指定的内核存储器区域映射到用户层,因而用户能根据存储器映射过程中提供的属性对其进行读取或写入操作。

我们使用控制单元来访问这些寄存器和串行化键 / 值组件的更新。键 /值对存储在能根据应用要求进行配置的存储器单元中。该存储器模块包含键、值和可用作标签的部分数位。这些标签用于标示存储器线路是否为空以及是否有效。为了加速键的索引进程,可用 Hash 模块将初始键转换为存储器模块的地址。

在当前配置中,我们设计的存储器结构可容纳 2 千个键 / 值对。每个键的长度可达到 64 位(8 个字符),值的长度达 32 位。存储器结构的总体大小为 2K x 104 位。第一个 64 位存储的键用于比较使用 Hash 函数时我们究竟是命中还是错失;接下来的 8位用于存储标签;再之后的 32 位则用于存储该值。在当前的配置中,最大键值为64位,Hash函数用于将键(64位)映射到存储器地址(12位)。


最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了