微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 认识多种处理芯片的特性和实战

认识多种处理芯片的特性和实战

时间:03-02 来源:腾云阁 点击:

的分配,这种分配操作运行性能很低,严重影响整体计算的效率。在实际测试的代码中,将所有的设备内存分配都在开始时候一次完成,避免实际使用时的内存分配。数据从CPU内存复制到GPU的设备内存后,才能进行高性能计算。因此需要减少内存的复制时间,尽量使复制过程和GPU的计算叠加起来,形成流水式的操作。

使用GPU的异构编程,需要时刻关注GPU的利用率指标。这个指标代表GPU的繁忙程度,如果利用率很低,说明没有充分利用GPU内部的流处理器,存在流处理器较多时间空闲的情况,就需要调整和优化代码结构。一般说来,GPU的利用率应该大于80%,这是才比较充分的利用了GPU的性能。

最终的测试是和Nvidia公司的软件团队共同完成,实验性能得到了Nvdia公司的认同。下表给出GPU对JPEG图像再编码的性能数据。

1.7.3 FPGA的实践和性能

FPGA是一个单独的芯片,为了能在服务器环境使用FPGA芯片,需要设计一张FPGA计算卡,该卡使用PCIE接口和主机连接,卡上安装一片xilinx v7-690T的芯片,同时具有2GB的DDR内存。FPGA编程没有操作系统的支持和辅助,因此FPGA内部的资源必须用户自己管理,比如FPGA访问DDR内存的数据,必须通过硬件逻辑来实现,FPGA芯片和外部设备之间的数据交换也必须全部由使用者设计硬件逻辑实现功能,比如通过PCIE接口将主机内存复制到FPGA卡内的DDR内存等。

而且FPGA软件设计的生态环境和CPU的环境不同,通常FPGA设计没有大量可用的开源软件。即使有一些公司提供商业的解决方案,费用一般也很昂贵。实际上在硬件设计领域,一般都流行商业授权的模式。商业公司通常将开发的硬件逻辑打包为IP(intelligence property),有购买IP意向的使用者和商业公司谈判使用模式和费用,谈判完成前一般不提供试用版本。

为了解决FPGA编程困难、生产效率低的问题,我们创建了一个FPGA编程框架,利用框架提供用户需要的控制和数据,用户只需要聚焦于算法和功能,而不必关心底层功能的实现。FPGA编程框架弥补了FPGA 没有操作系统支持的弱点,其实质上类似一个小型的操作系统,实现对资源的管理和使用。如下图所示:

上图绿色部分展示了FPGA编程框架的构成,当前编程框架包含对PCIE接口协议的封装、DDR内存的存取和多路仲裁、DMA功能、邮箱消息接口等。编程框架里面包含了下列的重要部件:

PCI设备配置空间:设置PCIE设备配置空间的信息,包括PCI设备ID,制造厂商和设备IO端口以及IO mem资源
DMA:启动DMA功能,从主机内存物理地址复制数据到FPGA卡DDR内存的指定地址,或者从FPGA卡DDR内存的指定地址复制到主机内存物理地址。

DDR:从FPGA卡DDR内存指定地址读数据,每次读出64bit数据。或者往FPGA卡DDR内存指定地址写数据,每次写入64bit数据。

邮箱:邮箱提供主机和FPGA芯片之间的消息接口。

中断资源:中断接口管理和控制,通过接口可以触发一个系统中断。

在FPGA程序实现时最重要的问题就是资源利用率。FPGA和CPU不同,如果资源没有限制,FPGA理论上可以部署足够多的计算单元,性能可以达到无限。在图片转码的实践中,基于690T的芯片,实际上部署了30路的编解码核心,这时资源利用率达到70%。下表给出FPGA的性能数据。

1.8 结论和综述

从整个实践的过程理解,FPGA&GPU芯片的使用是很复杂的过程。性能和性价比是否具有优势需要针对业务的计算类型设计程序和优化,并进行实际的验证得出结论。希望简单和一致性的结论没有可能,而厂商的结论多半并不可信,和实际验证的数据差别巨大。现实是硬件、环境和算法资源都很缺乏,这可能是异构编程应用不广泛和困难的原因。脱离了CPU的支持,使用GPU&FPGA等芯片的异构编程困难太多,如果像CPU集成GPU一样,同样在CPU内部集成FPGA功能,方便用户的选择和使用,将大大推动各种场景的实际应用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top