集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1140|回复: 0

可编程和并行技术最近的发展趋势

[复制链接]
zhiweiqiang33 发表于 2014-7-29 11:27:41 | 显示全部楼层 |阅读模式
在传统处理器体系结构上,这两种趋势的优势日益减小,我们开始寻找各种软件可编程器件,这些器件的发展非常快,如图1所示。重点是从运行时自动提取指令级并行处理操作,发展到在编码时明确的找到线程级并行处理操作。开始出现高度并行的多核器件,一般趋势是含有多个简单处理器,很多晶体管专门用于计算,而不是采用高速缓存,提取并行处理操作。这些器件一般包括含有2、4或者8个内核的多核CPU,以及含有数百个适用于数据并行计算的简单内核的GPU等。为能够在这些多核器件上实现高性能,编程人员必须以并行方式清晰的对实际应用进行编程。每一内核都必须分配一定的工作,这样,所有内核能够协同工作,执行某一计算。这也是FPGA设计人员在开发其高级系统体系结构时所做的工作。

考虑到多核新时代开发并行程序的需求,开发了OpenCL (开放计算语言),以便开发跨平台并行编程标准。OpenCL标准还能够自然的描述在FPGA中实现的并行算法,其抽象级要比VHDL或者Verilog等硬件描述语言(HDL)高得多。虽然有很多高级综合工具能够实现高等级的抽象功能,但是都存在同样的基本问题。这些工具会采用连续C程序,产生并行HDL实现。在开发HDL时,困难还不是很明显,但是,提取出线程级并行处理操作在FPGA中实现以提高性能时,困难却非常大。而FPGA的并行功能非常强大,与其他器件相比,在尽可能提取并行功能时出现任何失败的后果都非常严重。OpenCL标准能够解决很多这类问题,它支持编程人员明确的设定并控制并行处理操作。与纯C语言描述的连续程序相比,OpenCL标准能够更自然的匹配FPGA的高度并行特性。

OpenCL应用程序含有两部分。OpenCL主程序是纯软件例程,以标准C/C++编写,可以运行在任何类型的微处理器上。例如,这类处理器可以是FPGA中的嵌入式软核处理器、硬核ARM处理器或者外置x86处理器。

在这一主软件例程执行期间的某一点,某一功能有可能需要进行大量的计算,这就可以受益于并行器件的高度并行加速功能,例如CPU、GPU、FPGA等器件。要加速的功能被称为OpenCL内核。采用标准C编写这些内核;但是,采用结构对其进行注释,以设定并行处理操作和存储器等级。图2中的例子对两个数组a和b进行矢量加法,将结果写回输出数组应答中。矢量的每一元素都采用了并行线程,当采用像FPGA这类具有大量精细粒度并行单元的器件进行加速时,能够很快的计算出结果。主程序使用标准OpenCL API,支持将数据传送至FPGA,调用FPGA内核,传回得到的数据。

您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-6 10:22 , Processed in 0.061785 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表