数据中心的工作负载要求计算能力高、灵活性好、功耗高、成本低。同时改善所有这些因素是具有挑战性的。为了提高数据中心的能力,超出商品服务器设计所能提供的,我们设计并构建了基于现场可编程门阵列(FPGA)的可组合的、可重构的硬件结构。fabric中的每个服务器都包含一个FPGA, 48台服务器机架中的所有FPGA通过低延迟、高带宽网络互连。
我们描述了这种结构在1632台服务器上的一个中等规模的部署,并测量了它在加速必应网络搜索引擎的排名组件方面的有效性。我们描述了系统的需求和体系结构,详细描述了使系统在出现故障时健壮所需的关键工程挑战和解决方案,并度量了系统的性能、功率和弹性。在高负载下,大规模可重构结构在理想的延迟分布下提高了每个服务器的排名吞吐量95%,或在固定吞吐量下降低了29%的尾延迟。换句话说,可重构结构仅使用一半数量的服务器就能实现相同的吞吐量。
云计算已经成为向世界各地的企业和客户提供可伸缩、可靠和具有成本效益的在线服务的主导范式。根据IDC的数据,随着云计算在全球范围内的加速采用,IT云服务的公共支出将在2016年增长到超过1270亿美元。10这一重大转变将为解锁新的应用程序、提高性能、安全性和计算成本提供巨大的潜力。
今天的大多数云服务都是通过数据中心实现的,数据中心通常由数十台甚至数十万台服务器组成,这些服务器由通用处理器、内存、存储和网络等商用组件构建而成。数据中心跨应用程序和服务共享,提供规模经济、可靠性、可伸缩性和共享基础设施管理。
数据中心运营商传统上依赖于通用处理器的性能和效率的持续改进,以使数据中心更加强大和经济。这些改进在很大程度上是由摩尔定律(Moore’s law)和登纳德标度(Dennard scaling)推动的,摩尔定律预测晶体管数量将随时间呈指数增长8这预示着即使在一个固定的硅区域内晶体管数量增加,功耗也会保持不变。
近年来,登纳德缩放实际上已经结束,导致功耗大致与开关晶体管的数量成正比。因此,即使摩尔定律继续提供更多的晶体管,更多的晶体管必须按比例降低开关频率,以保持恒定的功耗。此外,随着晶体管变得越来越小,它们的制造成本也越来越高,这使得在单个芯片上封装越来越多的晶体管变得更加没有吸引力。
1.1.数据中心中的专用硬件
提高数据中心服务器性能和效率的一种方法是通过将服务器及其组件专门用于特定任务,更好地利用“功率有限”的晶体管。在学术文献中,专门化在许多情况下比通用处理器实现了10x100×或更多的能效改进,例如Memcached5,14压缩/解压,13,15k - means聚类,9,12以及部分网络搜索。20.然而,尽管针对特定工作负载专门化服务器可以提供显著的效率提升,但由于几个主要原因,这样做在数据中心中存在问题。
首先,数据中心,就其本质而言,支持各种各样的应用程序,专门为一种服务服务可能会导致效率低下,并增加共享平台的任何其他服务的成本。其次,专门化降低了同质性,这在数据中心环境中非常理想,可以减少管理问题并提供应用程序可以依赖的一致平台。第三,数据中心服务发展迅速,使得高度专业化的硬件功能不切实际,而且很快就会过时。因此,数据中心提供者面临着一个难题:他们需要在性能和效率上持续改进,但无法从标准通用处理器和静态专用硬件的任何组合中获得这些改进。
1.2.灵活的专用硬件
可编程硬件,以现场可编程门阵列(fpga)的形式,是可以潜在地协调灵活性和能源效率需求的设备。fpga可以被想象成简单逻辑块的硅“乐高”集合,可以配置和组合来实现任意电路,相对于通用处理器,这些电路的运行效率非常高。虽然与硬连接的应用特定集成电路(asic)相比,fpga的能源效率较低,但它可以在服务器的生命周期内快速重新配置并适应不断变化的工作负载。然而,在撰写本文时,fpga还没有被广泛部署为数据中心基础设施或客户端设备中的计算加速器。
传统上与fpga相关的一个挑战是需要将加速功能放入一个芯片上可用的可重构区域。今天的fpga可以使用运行时重新配置进行虚拟化,以支持比单个设备更多的功能。然而,需要保存和恢复的状态量,以及标准fpga当前的重新配置时间,使得这种方法过于缓慢,难以实现。多fpga可以提供更多的硅资源,但很难适应传统的数据中心服务器。即使有足够的空间可用,每个服务器上的多个fpga也会花费更多,消耗更多的电力,当fpga数量超过所需时,这是一种浪费,当仍然没有足够的fpga来实现应用程序时,甚至更没有用处。另一方面,如果每个服务器只能使用一个FPGA,则会限制可能会加速的工作负载,并且可能导致相关收益太小,无法证明成本是合理的。
1.3.弹射器可重构结构
本文描述了一种名为Catapult的可重构结构,它使用fpga提供专用硬件的性能和效率增益,同时满足数据中心的严格要求。见图1在该技术中,Catapult fabric以小板的形式嵌入到服务器的机架中,每个服务器上都有一个中型的FPGA和本地DRAM。Catapult的一个独特特点是fpga直接连接在一个高带宽、低延迟的网络中,允许服务分配一组fpga来提供必要的可重构区域,以实现所需的功能。
虽然在少量服务器上验证功能显示了设计的潜力,但数据中心的特点是大规模和严重的功率、成本和可靠性限制。为了展示该技术在数据中心规模上的潜力,我们测试了Catapult可重构结构,在1632台配备fpga的服务器上运行广泛部署的web搜索工作负载,并增加了故障处理。实验表明,在真实的、复杂的商业工作负载下,使用大规模可重构结构可以获得较大的搜索吞吐量和延迟。
与纯软件实现相比,在具有相同延迟分布的每个排名服务器上,Catapult结构的吞吐量提高了95%。在与软件相同的吞吐量下,Catapult减少了29%的尾延迟。换句话说,添加FPGA只需使用一半数量的服务器就可以实现相同的吞吐量。该系统能够长期稳定运行,当出现错误或机器故障时,故障处理服务可以快速重新配置织物。本文的其余部分将更详细地描述Catapult体系结构和我们的度量。
fpga是一种可以通过编程(和重编程)来实现复杂数字逻辑的数字芯片。从概念上讲,fpga由一组可编程逻辑元件组成,通过可编程路由网络连接,该路由网络将信号从产生的地方传输到消耗的地方。这些特性都由最终用户配置的内存单元控制。FPGA的设计通常使用硬件描述语言(HDL)开发,如VHDL或Verilog;这些设计被编译成FPGA程序(称为位流),类似于软件语言被编译成软件可执行文件的方式。然而,在HDL中指定设计要比典型的软件语言复杂得多,编译可能需要数小时才能完成。位流生成后,可以在几秒钟内将其加载到FPGA中,配置FPGA以实现所需的计算。
与完全定制的asic和通用cpu相比,fpga在性能/效率和灵活性上处于中间位置。通用cpu是最灵活的平台,能够实现任何应用程序。但这种灵活性的代价通常是与用于相同任务的ASIC相比,在性能和能源效率上降低100倍或更多。但是,当应用程序发生更改时,CPU仍然可以通过简单地重新编译软件来运行新的应用程序。当ASIC的目标应用程序发生变化时,很可能需要设计一个新的芯片,这一过程通常需要几个月的时间,并带来巨大的开发成本。
fpga结合了cpu和asic的各个方面。它们可以在应用程序更改时重新编程,以提供类似cpu的灵活性,但程序会生成专门针对应用程序的硬件,提供接近asic的性能和功耗。通用FPGA逻辑可以配置为利用大量细粒度并行性,并可以实现非常复杂的流水线结构,其速度可以比软件等效程序快几个数量级,功耗也更低。
现代fpga提供了数以百万计的随机逻辑门,可以包括数兆字节的内部存储,支持在每个时钟周期内进行数千次读写。这些芯片还包含更小的完全定制的块,如复杂的嵌入式算术元素(DSP块),高速I/O, IP协议块,并可能包括完整的微处理器,或作为硬化子系统或通过映射微处理器逻辑到芯片的可编程逻辑。
fpga已经出现了几十年,在加速各种应用方面具有巨大的潜力。然而,尽管有这样的前景,fpga还没有被广泛部署为计算加速器,即使在数据中心环境中,其灵活性、能效和性能的潜力应该使其极具吸引力。
这里描述的Catapult体系结构解锁了数据中心中fpga的潜力。为了实现这一点,体系结构必须是分布式的、可伸缩的、健壮的,并且工作在真实数据中心规模的工作负载上。在接下来的部分中,我们将描述该体系结构,并展示生产工作负载如何最终释放fpga长期以来承诺的潜在效率和性能收益。
对于任何新技术来说,数据中心都是一个具有挑战性的环境。单是量表就要求极高的可靠性、效率和低成本。快速的应用程序开发需要灵活性和健壮性。物理约束和正常运行时间要求使得在初次交付后修改或升级硬件在很大程度上是不切实际的。
为了在数据中心环境中获得成功,基于fpga的可重构结构至少必须满足以下要求:
这些需求指导了我们在整个Catapult系统开发过程中所做的架构选择。
3.1.集成
在设计可重构结构时,如何将fpga集成到数据中心可能是最重要的考虑因素。我们研究了各种各样的方法,根据它们与传统服务器的集成方式,可以大致分为两类:“联网”和“集成”。网络化设计将fpga添加到支持fpga的特殊服务器上,并将这些服务器安排为专用服务器的整个机架,或者将一些专用服务器嵌入传统机架中。集成设计将FPGA直接添加到传统服务器中,不需要专门的服务器,也不需要网络通信来到达FPGA。
在高性能计算(HPC)环境中已经开发和部署了网络设计。虽然高性能计算系统不像数据中心那样受到规模、成本、功率和同质性的限制,但在高性能计算系统中,fpga与cpu的集成取得了一定的成功。整个大型系统都只使用专门的服务器,包括Cray XD-1,7Novo-G,11和QP。18可以与传统数据中心服务器集成的专用服务器的例子包括传送HC-2,6Maxeler MPC系列,17BeeCube BEE4,4和SRC MAPstation。19事实上,在每个机架中嵌入一些专门的服务器是我们在项目早期首先采用的方法。然而,正如我们从第一个原型中学到的,由于几个原因,网络设计方法不适合数据中心的使用。
首先,专用机架和服务器是单点故障,专用节点的故障会影响许多相互依赖的常规服务器,从而放大对正常运行时间和整体服务可靠性的影响。
其次,专用的机架和服务器需要单独的冷却和电源供应,以及不同的软件、固件和备件供应,这使得管理和维护更加困难。
第三,与这些机架/服务器的所有通信都要通过现有的网络,这(在数据中心中)通常不是为到专用机架的多对一通信模式而设计的。
最后,在传统服务器上运行的应用程序部分和FPGA中运行的应用程序部分之间的所有通信都需要通过网络,即使在数据中心中,网络也可能具有高延迟、不可靠的传递和可变的性能。当通信量显示多对一通信模式时,这尤其困难。不可靠的性能使得在CPU和FPGA之间划分应用程序非常困难,特别是对于对延迟敏感的面向用户的应用程序,并且降低了将应用程序有益地卸载到可重构结构的可能性。
随着越来越多的分布式设计,这些问题的严重性逐渐降低。最极端的是集成设计,在每个服务器上添加一个FPGA。在集成设计中,FPGA故障只影响一台服务器。所有服务器都有相同的冷却和电源限制。CPU到FPGA的通信根本不需要经过网络。将FPGA直接连接到CPU可以大大减少通信延迟和差异,从而实现从CPU到FPGA的更细粒度和更可靠的卸载。
综合设计的同质性使额外的好处成为保持设计成本效益的关键。同质计算资源可以按任意粒度进行划分,从而简化了服务器的短期和长期供应。同质设计还提高了规模经济,从而产生更经济的设计。
3.2.可伸缩性
就其本身而言,在每个服务器上只集成一个FPGA,要么将应用程序限制为那些可以装入单个FPGA资源的应用程序,要么像专门的机架和服务器一样,在通过网络进行通信时遭受同样的高延迟和不可靠性问题。
为了克服这个缺点,我们在现有的以太网网络的基础上,建立了一个专门的网络,以方便fpga到fpga的通信。这个专门的网络利用fpga中可用的低延迟、高速串行I/O创建一个二维6 × 8环面网络。环面拓扑平衡了可路由性、弹性和布线复杂性。每条跨fpga网络链路双向支持每秒20 Gbits,每跳延迟为亚微秒,只需要无源铜电缆,不需要额外的网络成本,如网络接口卡或交换机。另一个高性能计算系统,Maxwell,3.采用了类似的方法,但同样针对HPC工作负载和约束。
3.3.FPGA板设计
图3显示了FPGA板和它安装到的服务器。16该板集成了Altera Stratix V D5中端FPGA,2我们选择它来平衡部署数千个FPGA的成本和FPGA的容量。该板还包括两组DDR3-1600 DRAM。PCIe和fpga间网络被连接到板底部的连接器上,该连接器直接插入主板。为了避免对服务器本身的改变,我们定制设计了一个小的10厘米× 9厘米× 16毫米插槽,占据1U(4.45厘米高)的半宽服务器的后部,它提供了足够的电源和冷却,仅为标准的25瓦PCIe外围设备。这些物理限制对于fpga来说是一个挑战,但是对于现代计算级图形处理器(gpu)来说却是一个禁忌。
3.4.外壳结构
在典型的FPGA编程环境中,用户通常不仅负责开发应用程序本身,还负责构建和集成数据封送、主机到FPGA通信和芯片间FPGA通信(如果可用)所需的系统功能。系统集成给用户带来了很大的负担,而且常常超过开发应用程序本身所需的工作量。这种开发工作通常不能移植到其他板上,这使得应用程序很难在未来的平台上工作。
在瞄准Catapult结构时,受用户生产力和设计可重用性需求的驱动,我们在逻辑上将所有可编程逻辑划分为两个分区壳牌和角色.的壳牌可编程逻辑的可重用部分在针对同一电路板的应用程序中是通用的吗角色是应用程序本身的逻辑,限制在一个较大的固定区域的芯片上。
图4显示了外壳架构的块级图,由带有自定义DMA引擎的PCIe、两个DRAM控制器、运行Serial Lite III协议的四个高速fpga间链路、环面网络路由器、重配置逻辑、单事件中断(SEU)清洗和调试接口组成。
角色设计人员在shell中访问方便且定义良好的接口和功能(例如,PCIe、DRAM、路由等),而无需考虑管理系统正确性。
公共shell还通过确保所有应用程序支持数据移动、重新配置和运行状况监视的相同API函数来简化软件。例如,我们共同设计了PCIe核心和DMA引擎,以实现非常低的延迟,为16 KB或更少的传输花费不到10秒,以及多线程安全。软件开发人员使用简单的发送而且收到调用来传输数据,而角色设计器只是对PCIe接口FIFOs进行读写。
虽然可以通过丢弃不使用的功能来获得额外的容量,但是外壳会消耗每个FPGA的23%。如果需要,部分重新配置允许在shell保持活动状态的情况下在角色之间动态切换,甚至在进行重新配置时在fpga之间路由通信,但这是以减少应用程序的逻辑区域和RAM可用性为代价的。
3.5.弹性
在数据中心尺度上,提供硬件故障时的弹性是必要的,因为这种故障经常发生,而对硬件可用性的需求始终很高。例如,在出现错误、硬件故障、重新引导和对实现的算法进行更新时,fabric必须保持可用。如果在重新配置过程中不小心,fpga可能会损坏它们的邻居或使宿主服务器崩溃。我们的可重构结构进一步需要一个自定义协议来重新配置fpga组,重新映射服务以从故障中恢复,并向管理软件报告错误。此外,在所有的外部存储器上使用ECC,并在FPGA的配置存储器上实现SEU检测和校正。
3.6.拥有总成本
为了平衡预期的每台服务器性能收益与总拥有成本(包括增加的资本成本和运营费用)的必要增加,我们设置了积极的功率和成本目标,以实现积极的ROI。由于业务敏感性,我们无法给出生产服务器的成本数字;然而,我们可以说,添加FPGA卡和网络的成本不到总拥有成本的30%,包括服务器总功率的10%的限制。
3.7.数据中心部署
为了在关键的生产规模数据中心服务上大规模测试该体系结构,我们在生产数据中心中制造并部署了该结构。该部署总共包含1632台机器,它们被组织在17个服务器机架中。每台服务器采用2个12核Intel Xeon cpu、64g DRAM、2个固态硬盘(ssd)和4个硬盘驱动器。这些机器有一个标准的10gb以太网网卡,连接到一个48端口的机架顶部交换机,交换机又连接到更广泛的数据中心网络。FPGA子卡和电缆组件在制造和系统集成时进行了测试。在部署时,我们发现有7张卡(0.4%)有硬件故障,电缆组件中的3264个链路(0.03%)中有一个有缺陷。从那时起,经过几个月的运行,我们没有看到任何额外的硬件故障。
为了研究Catapult结构的潜在影响,我们将微软必应的网页搜索排名引擎的很大一部分移植到可重构硬件中。除了作为一个具有代表性的数据中心规模的工作负载之外,必应还消耗了微软数据中心容量的很大一部分,并被用于支持许多流行的服务,如Yahoo!搜索,苹果Siri和XBox One上的搜索。作为交互式工作负载,必应同时需要低延迟和高带宽。此外,Bing有严格的弹性要求,操作复杂,编程使用数万行生产质量的c++代码,这使它成为衡量在生产环境中大规模可重构计算可行性的优秀候选人。
在我们的案例研究中,我们将大部分精力放在了必应搜索引擎的排名部分,这为硬件加速提供了最大的机会。超过30K行c++代码使用Verilog HDL手动移植到Catapult结构。实现产生的结果与软件完全相同,甚至再现了已知的软件bug。正如下面将进一步详细讨论的那样,我们的实现总共需要7个fpga来运行服务的单个实例,再加上一个额外的冗余备份。如果没有连接多个fpga的低延迟、高带宽网络的可用性,加速排名服务将是不可行的。
4.1.使用fpga加速Bing排名
必应搜索引擎在逻辑上被划分为多个软件服务,跨越数据中心的大量服务器。当用户的搜索查询由必应搜索引擎处理时,它首先被提交到一个前端缓存服务,该服务存储并交付以前提交的和流行的查询的结果。如果搜索查询无法在缓存中找到,它将被转发到Selection和Ranking服务,它们执行生成搜索结果所需的实际计算。
选择服务负责接受用户的查询,并从互联网上的数十亿个文档(如网页)中选择有价值的候选文档。Ranking服务进一步获取这些选定的文档,并通过一个复杂的排名算法运行它们,该算法确定这些文档应该以何种顺序呈现给用户。
必应排名算法的输入是一个“命中向量”,对应于来自上游选择服务的文档查询对。命中向量有效地编码了用户查询的单词在给定文档(例如,网页)中出现的位置。Ranking算法的输出是一个文档“分数”,它用于确定文档呈现给用户的位置。
从概念上讲,必应排名算法分为三个主要阶段:(1)特征提取(FE)、(2)自由形式表达式(FFE)和(3)机器学习评分(MLS)。图5说明了将这些阶段分配到八节点FPGA管道的硬件处理管道:一个FPGA用于FE,两个用于ffe,一个用于提高评分引擎效率的压缩阶段,还有三个用于MLS。第八个FPGA是一个备用的FPGA,它允许对环进行重新配置和旋转,以在发生故障时保持排名管道的活动。
4.2.特征提取
在FE中,根据用户的搜索查询动态提取给定文档的有趣特征。作为一个简单的例子,NumberOfOccurencesFeature只是统计查询在给定文档中出现的次数。在必应排名中,对于给定的文档-查询对,可能会计算多达数千个特性。
我们的FPGA加速卡比使用多指令、单数据计算(MISD)形式的软件具有显著的优势。在FPGA中,我们实例化了43个惟一的特征提取状态机,用于并行计算每个文档查询对的近4500个特征。每个特性都是一个独立的指令流,数据是MISD并行的单一文档,FPGA可以比cpu和gpu更有效地利用它。
每个状态机每次读取一个命中向量,并执行本地计算。对于一些具有类似计算的特征,单个状态机负责计算多个特征的值。举个例子NumberOfOccurencesFeature只是统计查询中每个术语(即单词)出现的次数。在文档的末尾,状态机输出所有非零特征值;为NumberOfOccurences,这可能取决于查询中术语的数量。
为了支持以高时钟率并行处理相同输入数据的大量状态机集合,我们将块组织成树状层次结构,并多次复制每个输入。图6显示了FE层次结构的逻辑组织。命中向量被送入命中向量处理状态机,该状态机产生一系列由各种特性状态机处理的控制和数据令牌。每个状态机以每个令牌1到2个时钟周期的速率处理每个命中向量。当一个状态机完成它的计算时,它发出一个或多个特征索引和值,这些值被馈送到特征收集网络中,该网络将来自43个状态机的结果合并为一个输出流,用于下游的FFE阶段。对FE的输入进行双缓冲,以增加吞吐量。
4.3.自由的表达
ffe是特征提取阶段提取的特征的数学组合。ffe为开发人员提供了一种创建混合特性的方法,这些特性不能方便地指定为特征提取状态机。通常有数千个ffe,从简单的(如添加两个特性)到大型的复杂的(有数千个操作,包括条件执行和复杂的浮点运算符,如在战俘,fpdiv).ffe在不同模型之间差异很大,因此为每个表达式合成定制的数据路径是不切实际的。
一个潜在的解决方案是平铺许多现成的软处理器核心(如Nios II)1),但是这些单线程内核在每个宏管道阶段所需的时间(8秒)内处理数千个具有长延迟浮点操作的线程时效率很低。相反,我们开发了一个自定义的多核处理器,考虑到大量多线程和长延迟操作。结果是如图所示的FFE处理器图7.FFE微架构的面积效率很高,让我们可以在单个FPGA上实例化60个核。
定制FFE处理器有三个关键特征,使其能够在规定的期限内执行所有表达式。首先,每个核心支持四个同步线程,以一个周期一个周期为功能单元进行仲裁。当一个线程在执行长时间操作(如浮点除法或自然日志操作)时暂停时,其他线程会继续进行。所有功能单元都是完全流水线化的,因此任何单元都可以在每个循环中接受一个新操作。
第二,不是公平的线程调度,而是使用优先级编码器静态地对线程进行优先级排序。汇编程序将具有最长预期延迟的表达式映射到所有核上的线程槽位0,然后填充所有核上的槽位1,依此类推。一旦所有核心在每个线程槽中都有一个线程,剩下的线程将追加到之前映射的线程的末尾,再次从线程槽0开始。
第三,延迟最长的表达式被分割到多个fpga中。上游FFE单元可以执行部分计算并产生一个称为元特征的中间结果。这些元特征像任何其他特征一样被发送到下游的ffe,有效地用简单的特征读取替换表达式计算的这部分。
4.4.文档得分
流水线的最后一个阶段是一个机器学习模型评估器,它将特征和ffe作为输入,并产生一个浮点分数。这个分数被发送回搜索软件,查询的所有结果分数被排序,并以排序的顺序返回给用户作为搜索结果。
4.5.并行性
为了克服fpga相对于cpu和gpu较慢的时钟频率,每个评分阶段都利用了其他体系结构不容易处理的两种并行形式。首先,这里描述的每个处理阶段都配置了与应用程序中可用的管道并行量相匹配的深层管道。
其次,FE和FFE具有多指令单数据(MISD)并行性,它是更常见的单指令多数据(SIMD)并行性的表兄弟,由gpu和cpu中的向量处理单元利用。单一数据源(文档)由非常多的独立指令流(分别为FE和FFE的特征提取器和自由形式表达式)操作。SIMD体系结构需要相反的、由同一指令流操作的大量独立数据元素。
虽然SIMD体系结构通过将许多数据集批处理在一起,可以有效地处理具有MISD并行性的应用程序,但这是以增加延迟为代价的,这在web搜索等交互式云应用程序中通常是禁止的。因此,web排名是一个云应用程序的例子,fpga可以更有效地加速其他并行处理架构。
我们通过在1632台使用fpga的服务器上部署和测量所描述的必应排名引擎来评估Catapult结构。672台机器运行排名服务,其他机器运行选择服务,向排名服务器提供文档和查询。我们比较了Bing的生产级排名器在有和没有fpga的情况下运行的平均和尾延迟分布。
用户体验更多的是由尾部延迟决定的,而不是平均延迟。如果他们的搜索结果返回的速度比预期的要快,用户几乎不关心,但如果结果比预期的要慢,他们很快就会不高兴。因此,我们报告的性能是在第95百分位查询的延迟时(只有5%的查询变慢)。对于平均延迟查询(第50百分位),性能结果非常相似,对于较高的尾部延迟(第99百分位和99.9百分位),性能结果甚至更好,这对用户体验的影响最大。
图8说明了fpga加速排名器如何大幅减少端到端评分延迟,并提高相对于软件的吞吐量。可以通过两种方式查看该图上的性能改进。首先,求一个不动的点x-axis,它显示在指定查询延迟时吞吐量的改进。例如,在1.0(这表示Bing在第95个百分位数上的最大可接受延迟)时,相对于软件,FPGA在评分吞吐量方面获得了95%的提高。
二是求一个不动的点y-axis表示在给定吞吐量下响应时间的改进。在1.0时,表示服务器上的平均查询负载,FPGA将查询延迟减少29%。在更高的注入速率下,FPGA评分延迟的改进进一步增加,因为软件延迟的可变性在更高的负载下增加(由于CPU内存层次结构中的争用),而FPGA的性能保持稳定。这种改进的稳定性意味着FPGA能够比单独的软件更好地吸收突发流量,这可能会减少突发流量的过度配置需求。
鉴于fpga可以用来提高延迟和吞吐量,必应可以从许多方面获益。例如,对于相同的排名能力,可以购买更少的服务器。在目前的平均查询速度下,必应可以使用大约一半的服务器数量,在实现性能目标的同时,还可以节省大量成本。另一个例子是,更快的响应时间意味着可以向软件和/或硬件堆栈添加额外的功能和特性,以提高搜索质量,而不超过允许的最大延迟。当然,两者的结合也是可能的。
多年来,fpga在加速许多计算任务方面显示出了希望。然而,尽管有巨大的潜力,它们还没有成为现代数据中心的主流。我们构建Catapult结构的目标是了解在数据中心规模上操作fpga必须解决什么问题,以及对于大规模生产工作负载(特别是在服务器生命周期中变化的工作负载),是否可以实现显著的性能改进。
我们发现,有效地将复杂数据中心工作负载的很大一部分映射到fpga是可能的,并且提供了显著的ROI。我们证明,与纯软件解决方案相比,大规模部署fpga可以在生产搜索基础设施中提高95%的排序吞吐量,减少所需服务器,节约成本,并为改进搜索算法提供空间。我们在没有打破数据中心服务器的同质架构的情况下实现了这一点,也没有增加服务器的故障率。增加的FPGA板只增加了10%的功耗,在单个服务器的总拥有成本上没有超过30%的限制,在系统效率和TCO方面产生了显著的整体改进。
基于fpga的可重构织物并不是我们考虑的唯一加速器平台。gpu是加速大规模工作负载的一个选择,当我们第一次开始考虑使用gpu时。然而,gpu有效处理的SIMD并行并不能很好地匹配对延迟敏感,但高度发散的排名阶段(如FE)。此外,gpu的高功耗意味着它们不能很容易地集成到传统服务器中,传统服务器只有标准的25W PCIe卡的电源和冷却供应。相反,它们可能更适合于HPC环境,而不是广泛的数据中心部署。
我们得出的结论是,随着服务器性能水平的提高,分布式可重构结构是一条可行的前进道路,并且在摩尔定律的最后对于云计算的持续成本和能力改进将是至关重要的。可重构性是硬件加速与数据中心服务的快速变化保持同步的关键手段。
展望未来,fpga在数据中心广泛采用的最大障碍可能是可编程性。FPGA开发仍然需要大量的寄存器传输级手工编码和手工调优。然而,我们相信,结合精心设计的定制isa(如FE和FFE中使用的isa)的HW/SW协同设计、领域特定语言(如OpenCL)、面向fpga的c -to-gate工具以及可重用组件和设计模式库,将足以允许高价值的服务有效地针对fpga。从长远来看,为了提高这些结构的可编程性,需要改进用于计算的FPGA架构、更多集成的开发工具以及将加速器卸载作为核心功能的语言和工具设计,而不仅仅是与大型服务开发人员合作的专家团队。我们相信,在1015年内,也就是摩尔定律结束后很久,硬件和软件的组合编译将变得普遍。可重构系统,如这里介绍的Catapult结构,将是支持这些混合计算模型所必需的。
许多组织的许多人都为这个系统的建设做出了贡献,尽管他们的人数太多,不能在这里单独列出,但我们感谢我们的合作者,微软全球基础服务、必应、自动驾驶团队,以及我们在Altera和广达的同事,感谢他们出色的合作和辛勤的工作。我们感谢Reetuparna Das, Ofer Dekel, Alvy Lebeck, Neil Pittman, Karin Strauss和David Wood的宝贵反馈和贡献。我们还要感谢陆奇、Harry Shum、Craig Mundie、Eric Rudder、Dan Reed、Surajit Chaudhuri、Peter Lee、Gaurav Sareen、Darryn Dieken、Darren Shakib、Chad Walters、Kushagra Vaid和Mark Shaw的支持。
1.阿尔特拉。Nios II处理器参考手册, 13.1.0版,2014年。
2.阿尔特拉。Stratix V设备手册, 2014年14.01.10版。
3.巴克斯特,布斯,布尔,M,卡伍德,G.,佩里,J.,帕森斯,M.,辛普森,A.,特鲁,A.,麦考密克,A.,斯玛特,G.,斯玛特,R.,坎托,A.,张伯伦,R., Genest, G.麦克斯韦64 FPGA超级计算机。Eng。列托语.16(2008), 426433, 2008。
4.BEECube。BEE4硬件平台, 1.0版,2011年。
5.Blott, M., Vissers, K.用于10Gbps线速率键值存储的数据流架构。在HotChips2013(2013年8月)。
6.传达。传送HC-2计算机, con -12-030.2版,2012。
8.Dennard, R., Rideout, V., Bassous, E., LeBlanc, A.具有非常小物理尺寸的离子注入MOSFET的设计。固态电路.9,5(1974年10月),256268。
9.Estlick, M., Leeser, M., Theiler, J., Szymanski, J.在可重构硬件上实现K-means聚类的算法转换。在2001年ACM/SIGDA第九届现场可编程门阵列国际研讨会论文集, FPGA'01(纽约,纽约,美国,2001)。ACM。
10.全球和区域公共IT云服务20142018预测(2014年10月)。
11.George, A., Lam, H., Stitt, G. Novo-G:处于可伸缩可重构超级计算的前沿。第一版。科学。Eng。13, 1(2011), 8286。
12.Hussain, h.m., Benkrid, K, Erdogan, a.t., Seker, H. fpga上的高参数化K-均值聚类:与GPPs和gpu的比较结果。在2011年可重构计算与fpga国际会议论文集, RECONFIG'11(华盛顿特区,美国,2011)。IEEE计算机协会。
13.IBM。IBM PureData系统分析N2001, WAD12353-USEN-01版,2013。
14.Lavasani, M., Angepat, H., Chiou, D. memcached的基于fpga的在线加速器。第一版。拱门。列托语.Pp, 99(2013), 11。
15.A. Martin, Jamsek, D. Agarawal, K.基于fpga的应用加速:GZIP压缩/解压流引擎的案例研究。在ICCAD特别会议7C(2013年11月)。
17.Pell, O., Mencer, O.通过可重构数据流计算,幸存频率缩放的终结。SIGARCH第一版。Archit。新闻39(2011年12月)。
18.M. Showerman, Enos, J., Pant, A., Kindratenko, V., Steffen, C., Pennington, R., Hwu, W. QP:一个异构多加速器集群。2009。
19.SRC。MAPstation系统, 70000 AH版,2014。
20.颜俊,赵志强,赵志强。、徐、纽约。,Jin, X., Zhang, L.-T., Hsu, F.-H. Efficient query processing for web search engine with FPGAs. In2012年IEEE第20届现场可编程自定义计算机国际研讨会论文集, FCCM'12(华盛顿特区,美国,2012)。IEEE计算机协会。
图1。机架中的每个服务器都有一个通过PCI Express连接到主机的本地FPGA。fpga使用私有的低延迟、高带宽串行网络与邻居进行通信。可以将多个fpga分配给单个服务,例如Bing排名,而不需要经过主机cpu。
图2。表示抽象FPGA的一个单元的框图。每个单元由通用逻辑门(L)、嵌入式内存(ram)和专用算术单元(dsp)组成。这些基本的瓷砖被复制,以创建越来越大的FP-GAs。
图3。FPGA板及其安装到的服务器。(a) FPGA板框图。(b)制造板的图片。(c)承载FPGA板的1U半宽服务器示意图。空气从左向右流动,FPGA在两个cpu的排气。
图5。将排名角色映射到可重构结构上的fpga。数据从每个服务器发送到队列管理器。然后通过七个FPGA计算阶段分派它,并将结果发送回源服务器。
图6。第一阶段的排名管道。每个命中向量被流到命中向量预处理状态机中,分裂为控制和数据令牌,并并行发布到43个独特的功能状态机中。特征收集网络收集生成的特征和值对,并将它们转发到下一个管道阶段。
图7。在FPGA上放置和路由的自由形式表达式。一个FPGA上可以容纳60个核心。
图8。在给定的延迟范围内实现的性能。x轴上1.0处的点显示了FPGA和软件上的最大持续吞吐量,同时满足Bing的延迟目标(95%)。
©2016 0001 - 0782/16/11 ACM
允许为个人或课堂使用部分或全部作品制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有信用的文摘。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,都需要事先获得特定的许可和/或费用。请求发布的权限permissions@acm.org传真(212)869-0481。
数字图书馆是由计算机协会出版的。版权所有©2016 ACM, Inc.
没有发现记录