热度 33
2014-12-17 18:01
2829 次阅读|
0 个评论
FPGA 作为有史以来最具创新性的 半导体器件 ,一直都走在架构和工艺的最前沿。也正是因其较高的技术门槛和 IP 要求,这一领域的玩家几乎屈指可数。两家主流的 FPGA 厂商在架构创新和工艺制程的提升方面你追我赶,竞争甚是激烈。不过,这一局面开始呈现出一些新的发展态势,几年的攻城掠地后,他们都在自己所专注且擅长的领域赢得了一席之地,差异化特征越来越明显。 赛灵思这几年在忙什么? 这是我近来非常关注的一个问题。 今年是赛灵思成立的第 30 个年头,近年来的创新,让赛灵思从传统可编程逻辑公司转型为 “All Programmable” 公司,创建各种形式的软 / 硬件、数字和模拟可编程技术并将其并整合到 All Programmable FPGA 、 SoC 和 3D IC 中。这些器件集可编程系统的高集成度以及嵌入式智能和灵活性于一身,支持快速开发高度可编程的智能系统。 有两个动向需特别关注:今年上半年,赛灵思推出“软”定义网络 ( “ Softly ” Defined Networks) 解决方案,将可编程能力和智能化功能从控制层扩展至数据层。全新 SDNet 软件定义规范环境可实现可编程数据层功能设计,而且功能规范可自动编译到赛灵思的 All Programmable FPGA 和 SoC 中。 直至近来,赛灵思又宣布推出针对 OpenCL 、 C 和 C++ 的 SDAccel 开发环境,将单位功耗性能提高达 25 倍,相对其它 FPGA 解决方案,性能和资源效率可提高 3 倍。目前,赛灵思已经通过这一开发环境实现了 FPGA 向数据中心应用加速。 赛灵思究竟在做什么?它的发展路线始终围绕 FPGA ,但似乎已经超越了传统 FPGA 厂商的范畴。以下节选自美国 Eletronic Engineering Journal 的一段内容或许对我们有所启发。 If FPGAs are to become the compute engines of the future, the flow of FPGA design must make a tectonic shift toward the software engineer. The devices must seem like processors, and the implementation must feel like programming. Synthesis, simulation, and layout must be replaced by compilation and debug. Detailed control of optimization options must be replaced by rapid iteration and productive workflow. In short, the whole hardware-engineer-centric FPGA process must be turned on its side. ( from Kevin Morris at EE Journal ) 这就是赛灵思正在做的事情。 单纯地依靠 FPGA 芯片架构、工艺制程或是增强型工具套件进行性能提升已成为过去式。如果 FPGA 希望进入一个更广阔的新世界去开疆拓土,软件开发环境是一个不得不逾越的鸿沟,而这需要根本上的改变。赛灵思必须能够在硬件工程师与软件开发人员之间搭建起一座沟通的桥梁,让他们即使使用各自的语言也能自由沟通。 SDNet 是 Xilinx 的第一步尝试, SDAccel 则紧随其后。这就是赛灵思努力实现的 SDx 系列,它已不仅仅是某一项市场策略,而是该公司以软件为中心的 SDx 生态系统,正在帮助赛灵思将 FPGA 的发展推进一个新境界。当然,背后起关键支撑作用的仍然是赛灵思多年来大量的工具和 IP 积累。 赛灵思如何搭建软硬件人员的沟通桥梁? 建立起硬件工程师与软件开发人员的沟通并非易事。硬件工程师追求的是系统的优化——如何在最小的硅片面积,以最低的功耗,实现最佳的性能。而软件开发人员则注重如何有效管理复杂代码,他们通常需要面对成千上万行代码,必须快速地进行迭代、分析,并以最少的 bug 、最易理解的方式来组织他们的编程语言。二者的工作似乎永远不会有交集。赛灵思是如何实现的? SDAccel 技术是建立在赛灵思于 2011 年年初收购 AutoESL 时获得的高层次综合( HLS )技术的基础上实现的。赛灵思在过去三年多时间里进一步开发该技术,并将其作为产品供货给 1000 多名 FPGA 客户。与此同时,赛灵思还将该技术从针对 C 和 C++ 扩展到了现在能够优化本地 OpenCL 代码的编译工作。 SDAccel 使软件开发人员能够利用新的或现有的 OpenCL 、 C 和 C++ 代码创建高性能加速器,并针对计算搜索、图像识别、机器学习、编码转换、存储压缩和加密等各种数据中心应用中的存储器、数据流和流水线技术进行了精心优化。 图 1 给出了 SDAccel 环境中的典型设计流程。 图 1 :通过 SDAccel 编译创建的可执行镜像可在赛灵思 FPGA 中实现。 有 FPGA 实例化经验的软件开发老手会发现 SDAccel 中有很多熟悉的内容。允许 C 、 C++ 和 OpenCL 输入是为了让来自独立 CPU 领域的开发人员尽快熟悉编程环境,同时能获得 FPGA 的所有独特功能集。 SDAccel 支持在 CPU 上的完整仿真,程序员可对并行和流水线化元素进行比较,并在对特定 FPGA 架构进行初始编译之前执行循环、片上存储器、和数据流等优化操作。 在 FPGA 上首次实现完全类似 CPU/GPU 的开发体验 借助 SDAccel ,开发人员能够使用其熟悉的工作流程优化应用,而且即便之前没有 FPGA 使用经验,也能受益于 FPGA 平台的优势。集成设计环境( IDE )不仅可提供编码模板和软件库,而且还能对各种开发目标进行编译、调试和特性分析,如在 X86 平台上仿真、使用快速仿真进行性能验证以及在 FPGA 处理器上进行本地执行等。 IDE 可在数据中心用 FPGA 平台上执行应用。该平台配套提供面向所有支持开发目标的自动仪器插入功能。此外, SDAccel 还经过精心设计,使 CPU/GPU 开发人员能够轻松将其应用迁移到 FPGA 上,同时还可在他们熟悉的工作流程中维护和复用 OpenCL 、 C 和 C++ 代码。 综合全面的 SDAccel 环境包括 编程器用 IDE 、基于 C 语言的 FPGA 优化库,以及数据中心用现成商用 ( COTS )平台。 SDAccel 库包括用于高性能低功耗实现方案的内置 OpenCL 函数、 DSP 、视频以及线性代数库。针对特定领域加速,赛灵思联盟合作成员 Auviz Systems 提供了精心优化的 OpenCV 和 BLAS OpenCL 兼容型软件库。原有的 COTS 成员包括 Alpha Data 、 Convey 、 Pico Computing ,预计 2015 年年初还将增加更多成员。 F2 : SDAccel 开发环境包括架构优化编译器、库、调试器以及特性分析器,可提供类似 CPU 或 GPU 的编程体验 在 FPGA 上首次实现完全与 CPU/GPU 的运行时间体验 SDAccel 能够支持带有多个程序和类似 CPU / GPU 按需可加载计算单元的应用。与 CPU/GPU 类似, SDAccel 对于 FPGA 解决方案的独特之处,在于能够保持程序转换过程中的系统正常工作。 SDAccel 目前是业界唯一能够创建可在应用运行过程中加载新加速器内核的 FPGA 计算单元的环境。在整个应用执行过程中,存储器、以太网、 PCIe 和性能监控器等关键系统接口和功能均保持工作状态。即时可重配置的计算单元可让多个应用共享 FPGA 加速器。例如通过对运行系统编程,可支持图像搜索、视频转码和图像处理之间的切换。 能够支持 C 、 C++ 和 OpenCL 对开发人员来说是一个独特优势,因为无论是使用现有代码库还是利用全新的 OpenCL 环境都可达到 “ 两全其美 ” 境地。尽管 OpenCL 提供一些明显优势,例如可移植性,以及在主机与运行内核的计算单元之间实现代码分段,但是大部分函数库和现有代码库均采用 C 或 C++ 编写。 SDAccel 使客户能够在合适的时候继续用 C 和 C++ 进行开发,同时利用 OpenCL 的可移植性进行移植。 SDAccel 库包含 OpenCL 内置函数、 DSP 、视频和线性代数库。 SDAccel 还将诸如 OpenCV 和 BLAS 等第三方的库集成到其软件环境中。当设计方案使用压缩或加密等复杂协处理模块时,利用 SDAccel 开发环境得到的设计在性能和大小方面可与手动编码效果旗鼓相当,甚至更胜一筹。 面向未来数据中心的开发环境 一直阻碍 FPGA 在数据中心应用中更广泛使用的主要原因就是缺乏一款高效优化的编译器和相关开发环境,以满足数十年在面向通用 CPU 和 GPU 架构的编译器上工作的需求。 SDAccel 的出现终于打破了这一局面,有助于在数据中心应用中实现设计优化。 SDAccel 不仅可完成用户在任何本地 OpenCL 编译器上所能实现的基本功能,如 循环合并、扁平化以及展开 等,而且还能执行一些更高级的优化工作,如内存使用、数据流、循环流水线等选项。这些优化让客户通过编译器将 C 、 C++ 或 OpenCL 直接高效导入到 FPGA 硬件中。赛灵思基准测试显示,编译器相对优化的 RTL 大小可减少 5% ,而且在一些情况下其结果质量( QoR )相比 RTL 能提升 20% 以上。这让客户能够在具有嵌入式调试功能的本地 FPGA 硬件上进行综合和调试前,即可在架构层的 x86 处理器上设计和优化他们的应用。 SDAccel 不仅使加速内核接近传统 CPU 和 GPU ,甚至超越它们以往的性能,而且还能简化面向未来低功耗异构数据中心的 FPGA 产品的开发工作。 SDAccel 在为数据中心创建功耗更优化型计算环境,以及在通用开发环境中整合 CPU/GPU 优化型编译和动态可重配置加速器方面所起的重要作用。 SDx 系列仍在持续创新 赛灵思公司亚太区销售与市场副总裁杨飞表示,赛灵思的 SDx 系列仍会持续发展。毫无疑问,这会帮助赛灵思面向更为广泛的用户群。事实上,不仅是数据中心,未来,有线通信、无线通信等领域都有广阔的应用前景。 赛灵思 SDx 系列已经收获了一系列不错的反响。关于它的未来,关于 FPGA 的未来,会是很有趣的猜想。