嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

算法在 FPGA 结构中的运行速度比在处理器中快多少?

现场可编程门阵列 (FPGA) 是一组逻辑门,这些逻辑门经过硬件编程以执行用户指定的任务。基于处理器的平台。得益于高速嵌入式资源,如 DSP 片和快速存储器,FPGA 现在是也用于算法加速。

该项目将 Pi 估计算法在 FPGA 硬件中的运行速度与同一算法在处理器上的运行速度进行了比较。ARM/FPGA SoC 开发的核​​心选项。Xilinx Zynq-7000 架构紧密集成了单核或双核 667MHz ARM Cortex -带有 Xilinx 7 系列 FPGA 的 A9 处理器。

Zynq_AP_SoC_Arhitecture_f30aa268255f67fa1f89328c5a71e88c16972b6b.png

Zynq APSoC Architecture

Cora Z7 产品变体分别称为 Cora Z7-10 (184-0484) 和 Cora Z7-07S  (184-0456) 。Cora Z7 广泛的硬件接口,从 1Gbps 以太网 PHY 到模拟到数字转换器和通用输入/输出引脚,使其成为开发各种嵌入式应用程序的理想平台。

Product Variant Cora Z7-10 Cora Z7-07S
Zynq Part XC7Z010-1CLG400C XC7Z007S-1CLG400C
ARM Processor Cores 2 1
1 MSPS On-chip ADC Yes Yes
Look-up Tables (LUTs) 17,600 14,400
Flip-Flops 35,200 28,800
DSP Slices 80 66
Block RAM 270 KB 225 KB
Clock Management Tiles 2 2

 

Cora_Z7_Zynq_7000_SoC_Platform_32163f9d5a13fd9bde54db873f65f63d5a562f5e.png

Cora Z7 Zynq 7000 Platform

Estimating Pi using Monte Carlo Method

有很多网站解释Pi Estimation through Monte Carlo Method,可以看看这个网站。原理是产生大量的随机点,看有多少落在单位正方形围成的圆内。 正方形的面积为 1,而圆形的面积为 pi / 4,因为半径为 0.5。有大量随机点 (x,y),

Estimating_Pi_using_Monte_Carlo_e191f3e53f887f5288ce5b8dbecc826be1148bab.png

Estimating_Pi_using_Monte_Carlo1_a2892bbf0e998151568253dd550e4d110d70a156.png

要实现该算法,您只需生成随机点(x, y)  ,然后检查该点与原点 (x,y) 的距离是否小于或等于 1 (x2 + y<= 1). 如果是,您增加出现在圆圈内的点数。

在 ARM 处理器和 Linux 中运行算法

教程 教你如何在Cora Z7 ARM处理器上启动Linux。然后你可以使用Go编程语言通过蒙特卡洛方法估计Pi。你需要的是Ubuntu 16.04.3,Xilinx Viavdo 2017.4PetalinuxGolang. 安装通过apt-get,但其他工具需要通过Xilinx官网下载,需要使用Petalinux引导进入Linux。

下表显示了每个 Cora Z7 变体处理 100,000 个蒙特卡罗样本所花费的时间。

Petalinux_Monte_Carlo1_6e6d1309e2f78d161dc7b9421ab00ea909abd044.png

在 FPGA 结构中运行算法

教程 向您展示如何在 FPGA 逻辑中构建算法。FPGA 结构包含称为数字信号处理 (DSP) 切片的元素。在运行蒙特卡罗方法的情况下,您需要进行两次乘法运算(x*x 和 y *y)。只要每个乘法运算的结果小于 48 位宽,您只需在每个运行 Monte Carlo 模拟的代码实例中使用两个 Cora 的 DSP 片。随机样本是通过使用线性反馈移位寄存器(LFSR),种子值由控制器提供,整个系统的时钟为125MHz。

查看下面粘贴的每个 Cora 变体打印的结果:

FPGA_Monte_Carlo_93bc1ffdc6a8fde4b08850e4cf2fe8f97f2f48ee.png

FPGA Vs Processor

两个 Cora Z7 变体中较慢的一个能够在大约一秒内处理一个完整的 32 位整数的样本,而在 Linux 中,两个变体中较快的仅在 1.8 秒内处理 100,000,000 个样本。该算法的版本快了 77 倍. FPGA 设计每个时钟周期可以处理 9 个 Monte Carlo 样本(每 8 纳秒一个时钟周期)。

 

                                                                                            

awong 还没写个人简介...
DesignSpark Electrical Logolinkedin