小舍YZ
发表于 2017-3-14 11:15:05
插入 FPGA 后的 Open Compute Server
小舍YZ
发表于 2017-3-14 11:18:12
FPGA采用Stratix V D5,有172K个ALM,2014个M20K片上内存,1590个 DSP。板上有一个8GB DDR3-1333内存,一个PCIe Gen3 x8接口,两个10 Gbps网络接口。一个机柜之间的FPGA采用专用网络连接,一组10G网口8个一组连成环,另一组10G网口6个一组连成环,不使用交换机。
小舍YZ
发表于 2017-3-14 11:18:35
本帖最后由 小舍YZ 于 2017-3-14 11:30 编辑
这样一个 1632 台服务器、1632 块 FPGA 的集群,把必应的搜索结果排序整体性能提高到了 2 倍(换言之,节省了一半的服务器)。如下图所示,每 8 块 FPGA 穿成一条链,中间用前面提到的 10 Gbps 专用网线来通信。这 8 块 FPGA 各司其职,有的负责从文档中提取特征(黄色),有的负责计算特征表达式(绿色),有的负责计算文档的得分(橙色)。
FPGA 加速必应的搜索排序过程
小舍YZ
发表于 2017-3-14 11:31:50
除了加速搜索结果的排序(RaaS,Ranking as a Service),FPGA 还被用来加速从倒排索引中取出相关文档并译码的过程(SaaS,Selection as a Service)。为了加快文档数据结构的访问,FPGA 把服务器主存里常用的 4K 内存页面缓存在 FPGA 板上的 DDR 上。
小舍YZ
发表于 2017-3-14 11:33:01
FPGA 不仅降低了必应搜索的延迟,还显著提高了延迟的稳定性。
本地和远程的 FPGA 均可以降低搜索延迟,远程 FPGA 的通信延迟相比搜索延迟可忽略。
fpga_feixiang
发表于 2017-3-14 11:40:46
"学好FPGA,海阔天空,人生能有几回从事FPGA,天高菜鸟飞,电路任我构,把电路用语言描述出来,综合成逻辑关系,然后在芯片中利用已有的触发器和LUT构成实际电路, 目前来说半定制FPGA芯片主要应用在军工领域较多,一些尖端科技领域,航天航空,以及日常通讯与图像处理算法,复杂工控FPGA也能得到很好应用,这就是FPGA的的本质。
钢铁石油在国家经济发展到一定程度,量就会减少,然后集成电路使用永远都在增加,随着中国的发展,集成电路将越来越发挥巨大作用,FPGA的前景一片大好。
学习技术的过程就是把脑海中的思想用语言表达出来,好的创意是编出好的程序的基石,多多扩大几自己专业知识背景,学习别人好的创意,这是如何学好FPGA的要领。
---札记(飞翔)"
小舍YZ
发表于 2017-3-14 11:41:07
FPGA 在必应的部署取得了成功,Catapult 项目继续在公司内扩张。微软内部拥有最多服务器的,就是云计算 Azure 部门了。Azure 部门急需解决的问题是网络和存储虚拟化带来的开销。Azure 把虚拟机卖给客户,需要给虚拟机的网络提供防火墙、负载均衡、隧道、NAT 等网络功能。由于云存储的物理存储跟计算节点是分离的,需要把数据从存储节点通过网络搬运过来,还要进行压缩和加密。
小舍YZ
发表于 2017-3-14 11:43:52
在 1 Gbps 网络和机械硬盘的时代,网络和存储虚拟化的 CPU 开销不值一提。随着网络和存储速度越来越快,网络上了 40 Gbps,一块 SSD 的吞吐量也能到 1 GB/s,CPU 渐渐变得力不从心了。例如 Hyper-V 虚拟交换机只能处理 25 Gbps 左右的流量,不能达到 40 Gbps 线速,当数据包较小时性能更差;AES-256 加密和 SHA-1 签名,每个 CPU 核只能处理 100 MB/s,只是一块 SSD 吞吐量的十分之一。
网络隧道协议、防火墙处理 40 Gbps 需要的 CPU 核数。
小舍YZ
发表于 2017-3-14 11:45:39
为了加速网络功能和存储虚拟化,微软把 FPGA 部署在网卡和交换机之间。如下图所示,每个 FPGA 有一个 4 GB DDR3-1333 DRAM,通过两个 PCIe Gen3 x8 接口连接到一个 CPU socket(物理上是 PCIe Gen3 x16 接口,因为 FPGA 没有 x16 的硬核,逻辑上当成两个 x8 的用)。物理网卡(NIC)就是普通的 40 Gbps 网卡,仅用于宿主机与网络之间的通信。
Azure 服务器部署 FPGA 的架构。
小舍YZ
发表于 2017-3-14 13:06:54
FPGA(SmartNIC)对每个虚拟机虚拟出一块网卡,虚拟机通过 SR-IOV 直接访问这块虚拟网卡。原本在虚拟交换机里面的数据平面功能被移到了 FPGA 里面,虚拟机收发网络数据包均不需要 CPU 参与,也不需要经过物理网卡(NIC)。这样不仅节约了可用于出售的 CPU 资源,还提高了虚拟机的网络性能(25 Gbps),把同数据中心虚拟机之间的网络延迟降低了 10 倍。
网络虚拟化的加速架构。