为将设计团队的生产力提升到全新的水平,并将All Programmable FPGA、SoC 和3D IC 推向更广泛的软件工程师用户,赛灵思近期新增了两款SDx 开发系列。新推出的SDAccel 开发使没有任何FPGA经验的数据中心设备编程员都能够运用OpenCL、C 或C++ 语言针对数据中心和云计算基础设施对赛灵思FPGA进行编程,设计出的FPGA 设备性能功耗比远超基于GPU 和CPU 的设备。赛灵思还推出了SDSoC 开发,支持同样没有FPGA 经验的软件开发人员用C 或C++ 语言基于赛灵思及第三方平台开发商推出的Zynq-7000 All Programmable SoC 和UltraScale+ MPSoC 平台创建各种系统。
SDx 是赛灵思All Programmable Abstraction 计划的最新产品。该计划旨在帮助软件工程师和系统架构师方便地编程赛灵思器件,同时开发可根据他们的需求量身定制。
“SDNet、SDAccel 与SDSoC 这一完美组合将为系统和软件工程师提供熟悉的类似CPU、GPU 和ASSP 的编程,这些工程师将首次尽享All Programmable 器件带来的独特优势,诸如定制加速功能,性能功耗比提升10 倍乃至100 倍,任意设备件间连接,以及提供下一代智能系统所需的保密性和安全性。赛灵思正力助下一代系统做到进一步互联,实现软件定义和虚拟化,同时还必须支持基于软件的分析,更多云端计算功能,这通常是无处不在的视频和嵌入式视觉应用所需要的。这就要求SDx 软件定义编程和异构多处理技术采用新型UltraScale FPGA 和MPSoC。”
这些All Programmable 器件比赛灵思早些年的胶合逻辑FPGA 高级得多,实现了任何其他架构所无法企及的系统功能和最终产品差异化。为了最大化这些最新器件的价值,在竞争中脱颖而出,管理层认识到赛灵思必须开发出相关工具和方法,帮助系统架构师乃至嵌入式软件开发员(而仅仅只有FPGA 专家),去进行赛灵思最新器件的编程工作。此外,公司还必须针对高增长市场,为软件工程师开发出设计,并根据设计人员习惯使用的工具和流程来定制这些。此外,加强与MathWorks 和国家仪器(Nl)等公司联盟也势在必行,这些公司已经构建了各种,使非传统FPGA 用户能够充分利用赛灵思All Programmable 器件的功率效率和灵活性优势。
对老客户来说,如果能为设计团队的每个都提供相应的设计,那就能确保高效性,缩短产品上市时间。如果这些足够高级,就能真正推广All Programmable FPGA 和Zynq SoC 设计,让那些没有FPGA 设计经验的架构师和软件工程师无需硬件设计人员帮助就能进行器件编程。全球软件工程师人数与硬件工程师人数比为10:1。因此,提供这种开发(或支持这种开发的硬件平台)的赛灵思及其联盟计划合作伙伴既能扩大用户群,又能增加营收。
该战略和支持软件工程师及系统架构师利用根据其设计需求量身定做的进行赛灵思器件编程的后续开发工作就是赛灵思所谓的All Programmable Abstraction(如图 所示)。
设计抽象迈出了重大的第一步,那就是赛灵思收购了私企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 硬件能提升其开发的设计性能。
10 年前,赛灵思为其ISE 开发添加了FPGA 架构级工具 系统生成器(System Generator),近期又给Vivado 设计套件添加了,以帮助具备FPGA 知识的团队进一步调节设计,实现算法性能增益。MathWorks 和赛灵思两家公司技术的强强组合,有助于客户公司推出成千上万种创新产品。
近期,其他公司也开始为赛灵思做出贡献。赛灵思近期迎来TOPIC Embedded Systems 和Silicon Software 这两家欧洲公司加入其联盟计划,特别是欢迎其针对医学和工业市场的高级开发。
TOPIC Embedded Systems(荷兰埃因霍温)拥有独特的开发DYPLO,《赛灵思中国通讯第54 期》对其进行了详细介绍。该面向Zynq SoC,很快也将面向Zynq MPSoC,对系统级设计采用统一方法,从而使系统架构师能够用C 或C++ 创建系统设计结果,并在Zynq SoC 的双核ARM Cortex-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 软件定义开发,赛灵思将面向关键市场的软件开发人员和系统架构师构建一系列高级的设计入门。SDAccel 和SDSoC 在底层自动运行整个Vivado 流程,无需直接使用Vivado 工具,也无需硬件工程师的协助。SDNet 不会访问Vivado HLS,针对线卡架构师,其提供了独特的“两步使用模型”。
在第一步中,线卡架构师采用直观的类似C 语言的高级语言而不是晦涩的微代码来设计需求,并制定网络线卡规格描述。SDNet 开发根据规格描述生成RTL 版设计。流程随后需要硬件工程师在目标FPGA 中实现RTL。
在第二步中,SDNet 还允许网络公司用高级语言测试和更新协议,并升级线卡的功能,即便在现场部署后也能做到,而且无需硬件设计参与。这个流程有助于企业快速创建并更新线卡,这种灵活性对软件定义网络而言非常重要。
《数据中心学刊》(Data Center Journal)2014 年3 月的一篇文章指出,谷歌、Facebook、亚马逊、领英等公司核心部分 数据库“消耗的电力占全球电力3% 以上,同时产生2 亿公吨二氧化碳”。如此巨大的能耗使得其数据中心一年电费超过600 亿美元。即便对最大规模网络公司来说,功耗也会严重削减盈利性,而且对也会产生不可估量的影响。
随着越来越多的企业期望采用云计算和大数据分析技术;视频和流的全球性普及,以及越来越多的人加入无线G 网络,对数量更多、性能更好的数据中心的需求呈几何级无止境增长趋势。《数据中心学刊》文章指出,从当前趋势看,到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 流程中,x86 CPU 结合运行赛灵思20nm Kintex UltraScale FPGA 的加速卡,软件开发人员能发现需要加速的应用,并用OpenCL 编码和优化内核,再为CPU编译和执行应用。随后他们再来评估并调试内核,直到找到周期精确的模型。接下来,再用SDAccel 编译代码,并自动实现在FPGA 中(可能因为Vivado 在底层运行)。随后就能运行应用,验证通过卡加速后的应用性能以及与单纯用CPU 运行的性能对比。Feist 指出:“他们能循环运行迭代,直到找到性能和功耗之间的最佳平衡,相对于CPU 和GPU 实现方案,性能功耗比可提升多达25 倍。”
SDNet 让线卡开发人员能够利用独特的软定义方式快速创建下一代网络,而SDAccel 则能让数据中心设备厂商的下一代数据中心设计的实现最佳性能功耗比。新的SDSoC 开发或许能为赛灵思用户群带来最广泛的影响。这是因为SDSoC 针对广泛的嵌入式系统设计团队,特别是软件工程师,这些软件工程师设计面向的是赛灵思Zynq SoC 所服务的大部分市场。SDSoC 现在能让用户配置逻辑 不光是对运行Zynq SoC 硬件平台的嵌入式系统处理器编程而且能使用C 和C++ 语言。
“软件开发人员习惯于对主板、ASSP平台和ASIC 进行编程,且无需硬件工程师参与。有了SDSoC 开发,他们就用类似ASSP 的方式对Zynq SoC 和MPSoC 平台进行编程。SDSoC 的独特之处在于现在我们能在Eclipse IDE 中用C 或C++ 语言面向Zynq SoC 和Zynq UltraScale+ MPSoC 平台创建完整的系统设计。”
使用SDSoC ,嵌入式软件开发人员能运用C 或C++语言创建设计并进行测试,以发现Zynq SoC 处理系统上哪些部分运行得不佳。一旦发现可疑代码,便突出显示并命令SDSoC 自动将该代码分区到Zynq SoC 的可编程逻辑中,以加速系统性能。Nick 指出,SDSoC只需点击按钮就能把软件功能移到FPGA 逻辑中,无需硬件工程师介入。SDSoC 中的编译器将生成整个Vivado 项目,并为目标硬件平台生成可引导的软件映像。
“利用针对我们Zynq SoC 的SDSoC ,我们主要是让我们的嵌入式软件工程师变成系统工程师。”
矢野浩二老婆傅晶
SDSoC 利用带有用户指定的C/C++ 代码的宏编译器,可在Zynq SoC 逻辑中实现加速。通过在底层运行Vivado 设计套件,该可自动将该代码返回IP 模块并将该模块配置为器件的逻辑,从而自动生成软件驱动程序。
“我们今后几个月将为SDSoC 添加更多BSP,尤其是随着越来越多第三方平台公司用Zynq SoC 开发系统。SDSoC 有助于赛灵思以及采用Zynq SoC 开发平台的公司扩大用户群。”
“SDSoC 的主要目的是让大量嵌入式软件设计人员能用赛灵思Zynq SoC 创建完整的系统,不过有传统FPGA 背景的用户和设计团队也能从该受益匪浅。”
“它能帮助设计团队快速用C 和C++ 语言设计系统架构,然后尝试不同的配置,以获得所需的最佳性能。如果他们团队里确实有FPGA 设计人员,则能让其通过Vivado 工具来进一步优化模块和逻辑布局。”