采用C/C++、OpenCL编程中的下个逻辑步骤

发布时间:2015-12-28 13:48    发布者:designapp
关键词: xilinx , zynq , poencl , SDAccelTM
自从赛灵思在上世纪 80 年代初期开发和推出世界首款 FPGA后,这些用途丰富的可编程逻辑器件就成为硬件工程师的 MacGyver 万能工具。 赛灵思最近发布了 SDxTM 系列开发环境(即 SDAccelTM、SDSoCTM 和 SDNetTM), 使软件开发人员和系统工程师(非 FPGA 设计人员)能够利用赛灵思器件轻松创建自己的定制化软件定义硬件,从而助力更多创意头脑实现非凡的创新技术。介绍这些新型环境以及赛灵思及其 联盟成员提供的其他软件开发资源之 前,我们先来思量一下处理架构的演变 及其对软件开发的影响。
这是软件问题…

2000 年以前,典型的微处理器主要由一 个带有板载内存的巨型单片处理器内核 和一些其他零部件组成,使 MPU 成为一 种用以开发新一代应用的相对简单直观的平台。在那之前的三十年里,微处理器厂商每隔22个月就会以摩尔定律的增长速度推出具有更高容量和性能的器件。他们会简单地以增加时钟速率的方式来提高性能。当时速度最快的单片 MPU 是英特尔奔腾 4 处理器 (Pentium 4 Pro),其极限速度刚刚超 过 4GHz。这种演进对于开发人员来说非常重要,因 为随着每代产品的推出,他们的程序会变得日趋复 杂,能执行更细化的功能,而且程序运行速度更快。 但在  21  世纪初期 ,半 导 体行 业改 变 了游 戏规 则,迫使开发人员根据一套新的规则进行调整。这 种转变起始于人们意识到了如果 MPU 产业继续在新 的单片 MPU 架构中提高时钟速率,那么鉴于芯片工艺技术的发展路线图以及日趋恶化的晶体管漏电流问题,MPU 将很快达到与太阳相同的功率密度。 正因为如此,MPU 产业快速向同质多处理架构转型 ;在这种同质多处理架构中,计算任务被分配 给多个以较低时钟速率运行的小型内核。新的处理 模型让 MPU 和半导体厂商能够继续生产新一代容量 更高的器件,并将更多功能集成到单个芯片中以获 得更高性能。然而,现有程序无法利用新型分布式 架构,因此软件开发人员必须想办法开发出能够跨 多个处理器内核高效运行的程序。同时,后来的几代芯片工艺技术继续使晶体管 数量成倍增长,让半导体公司能够采取另一个创新举措,即将不同类型的内核集成到同一颗芯片中,创建出 SoC。这些异构多处理器架构给嵌入式软件 开发人员提出了更多挑战,使软件开发人员不得不 开发定制软件协议栈,让应用能够在目标系统上实 现最佳运行。如今,半导体行业又一次改变游戏规则,但这 次软件开发人员则对转变持欢迎态度。面对另一个 功耗窘境,半导体和系统公司正在将目光转向由 FPGA 加速的异构处理架构。这种架构将 MPU 与 FPGA 紧密配合在一起,能以最小的功耗成本提高 系统性能。这种新兴架构最显著的应用是用于新型 数据中心处理架构中。在一篇现在著名的论文中, 微软研究人员展示了在架构上将 MPU 与 FPGA 组合 在一起能实现 90% 的性能提升,同时功耗仅仅增加10%,在单位功耗性能方面远远优于 MPU 与高功耗GPU 相结合而实现的架构。通过  FPGA 加速的异构多处理架构的优势已 经超 出了数 据中心应 用范畴 。赛灵 思  Z yn q ? -70 00 All Programmable SoC 器件在单芯片上完美集成了 ARM 处理器和可编程逻辑,让采用该器件的嵌入式 系统受益良多。使用即将推出的 Zynq UltraScale+TM MPSoC 的系统注定将会更加出色。Zynq UltraScale+ MPSoC  在单个器件中集成了多个 ARM?  内核(4 个 CortexTM-A53 应用处理器、2 个 Cortex-R5 实时处理 器和 1 个 MaliTM-400MP GPU)、可编程逻辑、多级 安全、更高安全性以及高级电源管理模块(如图 1 所示)。



图1 - Zynq UltraScale+ MPSoC不过,要让这些 FPGA 加速的异构架构适合大规模部署并方便软件开发人员使用,FPGA 厂商必须开发新的环境。在这方面,赛灵思提供了三个开 发平台 :针对数据中心开发人员的 SDAccel、针对 嵌入式系统开发人员的 SDSoC,以及针对网络线卡 架构师和开发人员的 SDNet。这些赛灵思新环境让 开发人员能够轻松将代码的缓慢部分放在可编程逻 辑上编程以加速程序,从而创建出最佳系统。

面向 OpenCL、C/C++ 的 SDAccel 通过编程实现FPGA 加速处理

最新的赛灵思 SDAccel 开发环境为数据中心应用 开发人员提供一套基于 FPGA 的完整软硬件解决方 案(图 2)。SDAccel 环境包含一个能有效利用片上 FPGA 资源的快速的架构优化编译器。该环境为开 发人员提供类似于 CPU/GPU 的熟悉的工作环境和软 件开发流程,并具有一个用于代码开发、特性分析 与调试的基于 Eclipse 的集成设计环境 (IDE)。利用 该环境,开发人员可以创建针对不同数据中心应用 可即时换入换出而优化的动态重配置加速器 , 可即时 换入换出。开发人员可使用该环境创建诸多应用, 这些应用能在运行时间内将众多内核换入和换出 FPGA,且不会干扰服务器 CPU 与 FPGA 之间的接 口连接,从而实现不间断的应用加速。SDAccel 环 境针对的是基于 x86 服务器处理器的主机系统,并 提供现成商用插电式 PCIe 卡,以增加 FPGA 功能。



图 2 - 面向 OpenCL、C 和 C++ 的 SDAccel 开发环境可将单位功耗性能提高 25 倍,利用 FPGA 实现数据中心应用加速。凭借  SDAccel  环境,开发人员即使先前没有 FPGA 经验也能使用 SDAccel 似曾相识的工作流程 来优化他们的应用,并充分发挥 FPGA 平台作用。该 IDE 提供编码模板和软件库,并可用来针对所有开发目标进行编译、调试和特性分析,包括 x86 上 的仿真、使用快速仿真进行性能验证,以及 FPGA 处理器上本地执行。该开发环境在面向数据中心的 FPGA 平台上执行应用,而且能自动插入工具以实现 所有开发目标。赛灵思设计的 SDAccel 环境能够让 CPU 和 GPU 开发人员轻松将应用迁移到 FPGA 上, 同时在熟悉的工作流程中维护和重用 OpenCLTM、C 和 C++ 代码。SDAccel 库对于 SDAccel 环境能实现类似于 CPU/GPU 的开发体验起到了重大作用。SDAccel 库 包含低级数学库以及生产力更高的库(如 BLAS、 OpenCV 和 DSP 库)。这些库用 C++(而非 RTL) 编写而成,因此开发人员可在所有开发和调试阶段完全按所编写的内容来使用它们。在项目早期,所有开发工作都在 CPU 主机上完成。因为 SDAccel 库 用 C++ 编写,所以它们能够与 CPU 目标(创建一个 虚拟原型)的应用代码一起编译,从而允许所有测 试、调试和初始特性分析在主机上进行。这个阶段 无需 FPGA。

SDSOC 支持 ZYNQ SOC 和 MPSOC 系统的嵌入式 开发

赛灵思为嵌入式系统开发人员设计了 SDSoC 开发环 境,用以针对赛灵思 Zynq SoC 和即将推出的 Zynq UltraScale+ MPSoC 进行编程。SDSoC 环境提供极 大简化的嵌入式 C/C++ 应用编程体验,包括一个可 在裸机或操作系统(例如 Linux 和 FreeRTOS)上运行的简单易用的 Eclipse IDE。该环境是一种用于异构 Zynq SoC 和 Zynq MPSoC 平台部署的综合而全面 的开发平台(图 3)。SDSoC 环境还配套提供业界 首款 C/C++ 全系统优化编译器,支持系统级特性分 析、可编程逻辑中的自动软件加速、自动系统连接 生成,以及可加快编程速度的多种库。该环境还为 客户和第三方平台开发人员提供开发流程,以使平 台能够在 SDSoC 开发环境中使用。



图 3 – SDSoC 开发环境提供熟悉的嵌入式 C/C++ 应用开发体验,包括简单易用的 Eclipse IDE和综合而全面的设计环境,以实现异构 Zynq All Programmable SoC 和 MPSoC 部署。

本文地址:https://www.eechina.com/thread-159558-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表