All Programmable Abstraction: 你的编程你做主

赛灵思的全新SDx 软件定义环境配合Vivado IPI、HLS 和备受青睐的系统级设计工具。

作者:Mike Santarini
赛灵思杂志出版商
赛灵思公司
mike.santarini@xilinx.com

为将设计团队的生产力提升到全新的水平,并将All Programmable FPGA、SoC 和3D IC 推向更广泛的软件工程师用户,赛灵思近期新增了两款SDxTM 开发环境系列成员。新推出的SDAccelTM 开发环境使没有任何FPGA经验的数据中心设备编程员都能够运用OpenCLTM、C 或C++语言针对数据中心和云计算基础设施对赛灵思FPGA进行编程,设计出的FPGA 设备性能功耗比远超基于GPU 和CPU 的设备。赛灵思还推出了SDSoCTM 开发环境,支持同样没有FPGA 经验的软件开发人员用C 或C++ 语言基于赛灵思及第三方平台开发商推出的Zynq®-7000All Programmable SoC 和UltraScale+TM MPSoC 平台创建各种系统。

SDx 环境是赛灵思All Programmable Abstraction 计划的最新产品。该计划旨在帮助软件工程师和系统架构师方便地编程赛灵思器件,同时开发环境可根据他们的需求量身定制。

赛灵思公司企业战略与市场营销高级副总裁Steve Glaser 指出:“SDNet、SDAccel 与SDSoC 这一完美组合将为系统和软件工程师提供熟悉的类似CPU、GPU 和ASSP 的编程环境,这些工程师将首次尽享All Programmable 器件带来的独特优势,诸如定制加速功能,性能功耗比提升10 倍乃至100 倍,任意设备件间连接,以及提供下一代智能系统所需的保密性和安全性。赛灵思正力助下一代系统做到进一步互联,实现软件定义和虚拟化,同时还必须支持基于软件的分析,更多云端计算功能,这通常是无处不在的视频和嵌入式视觉应用所需要的。这就要求SDx 软件定义编程环境和异构多处理技术采用新型UltraScale FPGA 和MPSoC。”

2014 年春季SDNetTM 开发环境(详见《赛灵思中国通讯第52 期》)推出后不久就推出了SDAccel 和SDSoC这两款新的开发环境。

SDx 新环境在帮助软件工程师和系统架构师对赛灵思器件的FPGA 部分进行编程的同时,也能让拥有硬件工程设计资源的设计团队的生产力更高,且更快集成到优化的系统上,进而加速产品上市进程。有了可行的系统设计,硬件工程师能集中精力优化FPGA 布局和性能,实现更高的系统效率,同时软件工程师则能进一步优化应用代码。

All Programmable Abstraction赛灵思于2008 年在新任CEO Moshe Gavrielov 领导下开始规划7 系列All Programmable 系列FPGA、3D IC 和Zynq-7000 All Programmable SoC 时,就明显发现7 系列和未来产品线的所有产品均具有丰富的功能,完全能让客户将赛灵思器件作为最新最具创新性产品的核心。

这些All Programmable 器件比赛灵思早些年的胶合逻辑FPGA 高级得多,实现了任何其他架构所无法企及的系统功能和最终产品差异化。为了最大化这些最新器件的价值,在竞争中脱颖而出,管理层认识到赛灵思必须开发出相关工具和方法,帮助系统架构师乃至嵌入式软件开发员(而仅仅只有FPGA 专家),去进行赛灵思最新器件的编程工作。此外,公司还必须针对高增长市场,为软件工程师开发出设计环境,并根据设计人员习惯使用的工具和流程来定制这些环境。此外,加强与MathWorks 和国家仪器(Nl)等公司联盟也势在必行,这些公司已经构建了各种环境,使非传统FPGA 用户能够充分利用赛灵思All Programmable 器件的功率效率和灵活性优势。

对老客户来说,如果能为设计团队的每个成员都提供相应的设计环境,那就能确保高效性,缩短产品上市时间。如果这些环境足够高级,就能真正推广All Programmable FPGA 和Zynq SoC 设计,让那些没有FPGA 设计经验的架构师和软件工程师无需硬件设计人员帮助就能进行器件编程。全球软件工程师人数与硬件工程师人数比为10:1。因此,提供这种开发环境(或支持这种开发环境的硬件平台)的赛灵思及其联盟计划合作伙伴既能扩大用户群,又能增加营收。

该战略和支持软件工程师及系统架构师利用根据其设计需求量身定做的环境进行赛灵思器件编程的后续开发工作就是赛灵思所谓的All Programmable Abstraction(如图1 所示)。

图1 – 利用新的SDx 设计环境和联盟成员提供的环境,赛灵思正帮助更多创新者充分发挥赛灵思All Programmable 器件的作用,为下一代产品带来更大增值。

图1 – 利用新的SDx 设计环境和联盟成员提供的环境,赛灵思正帮助更多创新者充分发挥赛灵思All Programmable 器件的作用,为下一代产品带来更大增值。

VIVADO HLS和IPI:设计抽象的第一步
2011 年, 设计抽象迈出了重大的第一步,那就是赛灵思收购了私企AutoESL 公司的高层次综合(HLS)工具。继并购之后,赛灵思于2012 年公开发布了集成到ISE® 设计套件和Vivado® 设计套件工具流程中的HLS技术。根据Berkeley Design Automation详细调研(结果表明AutoESL 的HLS 工具最简便易用,而且是EDA 产业所有HLS 工具中能提供最佳结果质量的HLS),赛灵思选择了AutoESL技术。HLS 源于EDA 世界,这也意味着工具使用模型面向的是ASSP 和片上系统(SoC)架构师以及拥有C 和C++ 编程经验、同时对硬件描述语言(Verilog 和VHDL)及芯片设计需求有一定工作了解的成熟设计团队。

利用Vivado HLS,具有丰富技能的架构师和设计团队能用C 和C++ 创建算法,同时利用Vivado HLS 来编译并转换那些算法为RTL IP 模块。随后,FPGA 设计人员能将这个模块及其它模块集成到创建或授权的RTL 中,并用赛灵思的IP Integrator(IPI)工具将IP 汇编到设计中。随后,FPGA设计人员能将汇编设计一步步通过Vivado 流程,执行HDL 仿真、时序与功耗优化、布局布线等。最终,设计人员生成网表/ 比特文件并配置目标All Programmable 器件的硬件。如果设计包含处理器(Zynq SoC 或MPU 软核),配置后的器件随即可供嵌入式软件工程师编程。

为了帮助嵌入式软件工程师应对繁杂的编程工作,赛灵思提供了基于Eclipse 的集成设计环境,即赛灵思软件开发套件(SDK),其包含编辑器、编译器、调试器、驱动程序和面向Zynq SoC 或FPGA 的库,其内嵌了赛灵思的32 位MicroBlazeTM 软核。该SDK 于10 多年前推出,随着赛灵思器件上处理器集成的发展变化而得到了大幅提升,此前器件上集成硬化的DSP Slice 和软核MCU 和MPU(8位、16 位和32 位),到Virtex®-4 和Virtex®-5 FPGA 时已转变为集成硬化的32 位PowerPC® ;到Zynq SoC 已转化为集成32 位ARM® 处理器;而到即将推出的Zynq UltraScale+ MPSoC 则发展到集成64 位ARM 处理器。

联盟成员为更多用户带来增值
10 多年来,赛灵思与国家仪器(NI)和MathWorks 公司一直保持密切合作。这两家公司致力于为其服务的特定用户提供量身定制的独特高级开发环境。

美国国家仪器(NI)(德克萨斯州奥斯汀)提供的硬件平台深受控制和测试系统创新者欢迎。赛灵思的FPGA和Zynq SoC 为NI RIO 平台提供动力。NI 的LabVIEW 开发环境是用户友好型图形化程序,底层运行Vivado设计套件,因此NI 的客户无需了解任何FPGA 设计细节。一些人或许根本不知道RIO 产品的核心其实是赛灵思器件。他们只需在LabVIEW 环境中对其系统编程即可,NI 硬件能提升其开发的设计性能。

就MathWorks(马萨诸塞州纳蒂克)而言,该公司10 多年前为其MATLAB®、Simulink®、HDL Coder和Embedded Coder 添加了FPGA 支持,底层运行赛灵思的ISE 和Vivado工具,而且完全自动化。因此,公司的用户—— 主要是数学算法开发人员—— 能开发算法并大幅提升算法性能,而且能在FPGA 结构上简便运行算法。

10 年前,赛灵思为其ISE 开发环境添加了FPGA 架构级工具—— 系统生成器(System Generator),近期又给Vivado 设计套件添加了,以帮助具备FPGA 知识的团队进一步调节设计,实现算法性能增益。MathWorks 和赛灵思两家公司技术的强强组合,有助于客户公司推出成千上万种创新产品。

近期,其他公司也开始为赛灵思环境做出贡献。赛灵思近期迎来TOPIC Embedded Systems 和SiliconSoftware 这两家欧洲公司加入其联盟计划,特别是欢迎其针对医学和工业市场的高级开发环境。

TOPIC Embedded Systems(荷兰埃因霍温)拥有独特的开发环境DYPLO,《赛灵思中国通讯第54 期》对其进行了详细介绍。该环境面向Zynq SoC,很快也将面向Zynq MPSoC,对系统级设计采用统一方法,从而使系统架构师能够用C 或C++ 创建系统设计结果,并在Zynq SoC 的双核ARM CortexTM-A9 处理系统上运行该结果。一旦用户发现设计某些部分在软件中运行太慢,可以将这些部分拖放到窗口中,将C 语言转化为FPGA 逻辑(底层运行Vivado HLS),并将其放入Zynq SoC 的可编程逻辑中。来回交换代码片段,直到达到最佳系统性能。TOPIC 最初用于医疗设备开发,目前也开始与工业设备制造商合作。

Silicon Software(德国曼海姆)是支持软件工程师利用赛灵思All Programmable 器件的最新联盟成员。公司的VisualApplets 图形图像处理设计环境可帮助面向Zynq SoC 平台的系统架构师和软件工程师打造工业机器视觉应用创新,而且无需硬件工程师的协助。在2013 年SPS Drives 行业展会的赛灵思展台上,Silicon Software展示了其用VisualApplets 环境开发的光学检查系统。演示显示通过采用VisualApplets 环境将图形处理任务从Zynq SoC 的处理系统转交给器件的FPGA 逻辑来执行,能将系统性能提升10 倍。

借助SDx推广FPGA和SOC设计
借助SDx 软件定义开发环境,赛灵思将面向关键市场的软件开发人员和系统架构师构建一系列高级的设计入门环境。SDAccel 和SDSoC 在底层自动运行整个Vivado 流程,无需直接使用Vivado 工具,也无需硬件工程师的协助。SDNet 不会访问Vivado HLS,针对线路卡架构师,其提供了独特的“两步使用模型”。

在第一步中,线路卡架构师采用直观的类似C 语言的高级语言而不是晦涩的微代码来设计需求,并制定网络线路卡规格描述。SDNet 开发环境根据规格描述生成RTL 版设计。流程随后需要硬件工程师在目标FPGA 中实现RTL。

在第二步中,SDNet 还允许网络公司用高级语言测试和更新协议,并升级线路卡的功能,即便在现场部署后也能做到,而且无需硬件设计参与。这个流程有助于企业快速创建并更新线路卡,这种灵活性对软件定义网络而言非常重要。

SDAccel 和SDSoc 这两个新设计环境将SDx 的理念推广到新的应用领域。

SDACCEL可优化数据中心性能功耗比《数据中心学刊》(Data Center Journal)2014 年3 月的一篇文章指出,谷歌、Facebook、亚马逊、领英等公司核心部分—— 数据库——“消耗的电力占全球电力3% 以上,同时产生2 亿公吨CO2”。如此巨大的能耗使得其数据中心一年电费超过600 亿美元。即便对最大规模网络公司来说,功耗也会严重削减盈利性,而且对环境也会产生不可估量的影响。

随着越来越多的企业期望采用云计算和大数据分析技术;视频和流媒体的全球性普及,以及越来越多的人加入无线网并准备升级到未来5G 网络,对数量更多、性能更好的数据中心的需求呈几何级无止境增长趋势。《数据中心学刊》文章指出,从当前趋势看,到2017 年数据中心流量预计将达7.7ZB,这意味着数据中心的功耗如果不能得到有效控制将会出现大幅增长。当今大多数数据中心的功耗主要源于其基础组件—— Intel x86 处理器。目前MPU 能提供良好但不是最佳的性能,而且功耗很高。

目前全球庞大的的软件工程师队伍均发现MPU 是最容易编程的器件。要解决数据中心性能问题,许多公司一直在设法构建采用图形处理单元(GPU)或通过GPU 实现CPU 系统加速的设备。GPU 的性能大大超越数据中心的CPU,但不幸的是功耗要高很多。性能虽然很高,但功耗巨大。

为集两者之大成,许多企业均转而采用以FPGA 为中心的方法,将FPGA 与其它处理器结合使用,以实现数据中心设备性能最大化。

许多数据中心设备厂商已证实,分立式FPGA 结合分立式CPU 使用,虽然每个卡的功耗会增加一点点,但性能却得到大幅提升,从而可大幅提升性能功耗比。还有人认为,通过采用一颗在单个SoC 上集成x86 处理器内核和FPGA 逻辑的芯片,有望进一步提升性能功耗比。还有人认为,在单个SoC 上集成FPGA 逻辑和64 位ARM 处理器IP 似乎能带来更低功耗但同样高性能的解决方案。

在数据中心使用FPGA 的主要障碍就是编程问题。数据中心开发人员习惯于x86 架构编程,这些开发人员通常只有纯软件编程背景。帮助开发人员将CPU 程序转向更快的GPU 的第一步就是业界OpenCL 语言的开放开发。过去2 年来,OpenCL 取得进一步发展,使客户能够针对FPGA 进行编程,从而为未来数据中心设备架构乃至无所不在网络创造了新的机遇。

通过推出SDAccel 环境,赛灵思弥补了编程鸿沟,并为数据中心工程师使用OpenCL、C 或C++ 编程FPGA 平台铺平了道路,而且无需硬件工程师介入。赛灵思公司设计方法市场高级总监Tom Feist 表示,针对OpenCL、C 和C++ 的SDAccel 开发环境使数据中心编程人员能够打造出比CPU 和GPU 系统性能功耗比高出25倍的设备。

Feist 指出,在SDAccel 流程中(见图2,SDAccel 开发环境演示),x86 CPU 结合运行赛灵思20nm Kintex®UltraScale FPGA 的加速卡,软件开发人员能发现需要加速的应用,并用OpenCL 编码和优化内核,再为CPU编译和执行应用。随后他们再来评估并调试内核,直到找到周期精确的模型。接下来,再用SDAccel 编译代码,并自动实现在FPGA 中(可能因为Vivado 在底层运行)。随后就能运行应用,验证通过卡加速后的应用性能以及与单纯用CPU 运行的性能对比。Feist 指出:“他们能循环运行迭代,直到找到性能和功耗之间的最佳平衡,相对于CPU和GPU 实现方案,性能功耗比可提升多达25 倍。”

图2 – 在本SDAccel开发环境演示中,工程师 Henry Styles介绍了如何通过使用内含Alpha Data ADM-PCIE-7V3加速器的标准64位x86工作站来运用SDAccel开发环境实现加速。

图2 – 在本SDAccel开发环境演示中,工程师 Henry Styles介绍了如何通过使用内含Alpha Data ADM-PCIE-7V3加速器的标准64位x86工作站来运用SDAccel开发环境实现加速。

在本期《赛灵思中国通讯》中,Feist 和他的同事详细介绍了SDAccel环境,后续文章则介绍SDAccel 的工作原理。

SDSOC让嵌入式系统创新者辈出SDNet 让线卡开发人员能够利用独特的软定义方式快速创建下一代网络,而SDAccel 则能让数据中心设备厂商的下一代数据中心设计的实现最佳性能功耗比。新的SDSoC 开发环境或许能为赛灵思用户群带来最广泛的影响。这是因为SDSoC 针对广泛的嵌入式系统设计团队,特别是软件工程师,这些软件工程师设计面向的是赛灵思Zynq SoC 所服务的大部分市场。SDSoC 环境现在能让用户配置逻辑—— 不光是对运行Zynq SoC 硬件平台的嵌入式系统处理器编程——而且能使用C 和C++ 语言。

SDSoC 产品经理Nick Ni 指出:“软件开发人员习惯于对主板、ASSP平台和ASIC 进行编程,且无需硬件工程师参与。有了SDSoC 开发环境,他们就用类似ASSP 的方式对Zynq SoC 和MPSoC 平台进行编程。SDSoC 的独特之处在于现在我们能在Eclipse IDE 环境中用C 或C++ 语言面向Zynq SoC 和Zynq UltraScale+MPSoC 平台创建完整的系统设计。

Nick 表示,使用SDSoC 环境,嵌入式软件开发人员能运用C 或C++语言创建设计并进行测试,以发现Zynq SoC 处理系统上哪些部分运行得不佳。一旦发现可疑代码,便突出显示并命令SDSoC 环境自动将该代码分区到Zynq SoC 的可编程逻辑中,以加速系统性能。Nick 指出,SDSoC环境只需点击按钮就能把软件功能移到FPGA 逻辑中,无需硬件工程师介入。SDSoC 中的编译器将生成整个Vivado 项目,并为目标硬件平台生成可引导的软件映像。

Nick 指出:“利用针对我们ZynqSoC 的SDSoC 环境,我们主要是让我们的嵌入式软件工程师变成系统工程师。”( 见图 3,SDSoC开发环境演示)

图3 – 在本SDSoC开发环境演示中,首席工程师Jim Hwang用SDSoC构建简单的图形处理流水线以检测运动,并在以60fps速率运行的实时HD 1080p视频流中插入运动边缘。

图3 – 在本SDSoC开发环境演示中,首席工程师Jim Hwang用SDSoC构建简单的图形处理流水线以检测运动,并在以60fps速率运行的实时HD 1080p视频流中插入运动边缘。

SDSoC 环境利用带有用户指定的C/C++ 代码的宏编译器,可在Zynq SoC 逻辑中实现加速。通过在底层运行Vivado 设计套件,该环境可自动将该代码返回IP 模块并将该模块配置为器件的逻辑,从而自动生成软件驱动程序。

SDSoC 可为基于Zynq All Programmable SoC 的开发板(包括ZC702和ZC706),以及第三方和特定市场平台(诸如ZedBoard、 MicroZed、ZYBO 以及视频与图像开发平台)提供板支持包 (BSP)。

Nick 表示:“我们今后几个月将为SDSoC 添加更多BSP,尤其是随着越来越多第三方平台公司用Zynq SoC 开发系统。SDSoC 有助于赛灵思以及采用Zynq SoC 开发平台的公司扩大用户群。”

Nick 同时指出,SDSoC 环境的主要目的是让大量嵌入式软件设计人员能用赛灵思Zynq SoC 创建完整的系统,不过有传统FPGA 背景的用户和设计团队也能从该环境受益匪浅。

Nick 指出:“它能帮助设计团队快速用C 和C++ 语言设计系统架构,然后尝试不同的配置,以获得所需的最佳性能。如果他们团队里确实有FPGA 设计人员,则能让其通过Vivado 工具来进一步优化模块和逻辑布局。”

如欲了解联盟成员对SDSoC 环境支持的更多信息,敬请参阅本期Xpedit 部分(第66 页)。关于赛灵思All Programmable Abstraction 的更多信息,敬请访问: http://china.xilinx.com/products/design-tools/allprogramma-ble-abstrac tions.html 。