新浪科技

使用带有片上高速网络的FPGA的八大好处

电子产品世界

关注

原标题:使用带有片上高速网络的FPGA的八大好处

引言

本文引用地址:http://www.eepw.com.cn/article/202006/413858.htm

自从几十年前首次推出FPGA以来,每种新架构都继续在采用按位(bit-wise)的布线结构。虽然这种方法一直是成功的,但是随着高速通信标准的兴起,总是要求不断增加片上总线位宽,以支持这些新的数据速率。这种限制的一个后果是,设计人员经常花费大量的开发时间来尝试实现时序收敛,牺牲性能来为他们的设计布局布线。

传统的FPGA布线基于整个FPGA中水平和垂直方向上运行的多个独立分段互连线(segment),在水平和垂直布线的交叉点处带有开关盒(switch box)以实现通路的连接。通过这些独立段和开关盒可以在FPGA上构建从任何源到任何目的地的通路。FPGA布线的这种统一结构为实现任何逻辑功能提供了极大的灵活性,可用于FPGA逻辑阵列内的任何数据路径位宽。

尽管在FPGA中的按位来布线非常灵活,但其缺点是每个段都会给任何给定的信号通路增加延迟。需要在FPGA中进行长距离传输的信号会导致分段之间的连接延迟,从而降低了功能的性能。按位布线的另一个挑战是拥塞,它要求信号路径绕过拥塞,这会导致更多的延迟,并造成性能的进一步降低。

Achronix将此挑战视为一个开发全新架构的机会,以消除传统FPGA的设计挑战并提高系统性能。Achronix的解决方案是在传统分段式FPGA布线结构之上,再为其全新的Speedster7t FPGA系列器件创建一个革命性的二维(2D)高速片上网络(NoC)。Speedster7t NoC连接到所有片上高速接口:400G以太网、PCIe Gen5、GDDR6和DDR4 / 5的多个端口。

NoC的内部由一组行和列组成,它们在整个FPGA逻辑阵列中将网络数据流量从水平和垂直方向上进行分发。主NoC接入(NAP)点和从NoC接入点位于NoC的每一行和每一列交叉的位置。这些NAP可以是NoC和可编程逻辑阵列之间的源或目的地。

Ethernet:以太网

Security:安全性

Configuration:配置

each direction:每个方向

Speedster7t的NoC似乎只对FPGA内部的布线总线有所帮助;但是,这种新型架构可以显着提高设计人员的工作效率,实现全新的设计功能,并提供了轻松实现密集型数据处理应用的能力。下面列举了在效率提高、设计变更和性能提升方面最显著的八种应用场景。

在整个FPGA的逻辑阵列中简化高速数据分发

在传统的各种FPGA架构中,对连接到FPGA的片外存储器以及与之相连的外部高速数据源进行双向的读/写操作,需要数据在FPGA逻辑架构中经过一条较长且分段的路由路径。这种制约不仅限制了带宽,而且还会消耗在逻辑阵列中的用户设计所需的布线资源,这给FPGA设计人员在时序收敛方面带来了挑战,尤其是其他逻辑功能对器件利用率提高的时候。

使用Speedster7t的NoC将数据从外部源传输到FPGA和存储器,比使用传统的FPGA架构完成同样的工作要容易得多。Speedster7t NoC增强了FPGA阵列中传统的可编程互连,其中的NoC就像一个叠加在城市街道系统上的高速公路网络。虽然Speedster7t FPGA中传统的、可编程互连矩阵仍然适用于较慢的本地数据流量,但NoC可以处理更具挑战性的、高速的数据流。

NoC中的每一行或每一列都被实现为两个256位的、以2 Ghz固定时钟速率运行的单向数据通道。行具有东/西通道,列具有北/南通道,从而允许每个NoC行或列可以同时处理每个方向上512 Gbps的数据流量。总而言之,这些通道可以通过编写简单的Verilog或VHDL代码,在FPGA阵列中传输大量的数据,这些代码支持FPGA与NAP通信并连接到NoC高速公路网络上。

下图显示了NoC中各个点之间的数据传输。点1和点2的逻辑分别实例化了一个水平NAP。NAP可以发送和接收数据,但是每个单独的数据流都只是朝向一个方向。类似地,点3和点4的逻辑实例化了一个垂直NAP,并且可以在彼此之间发送数据流。

自动将PCIe接口连接到存储器

在现在的FPGA中,设计人员在将高速接口连接至连有FPGA的存储器件进行读写时,必须考虑在器件内由于连接逻辑、进行布线、以及输入和输出信号的位置而产生的延迟。为了实现基本的接口功能,在设计过程中构建一个简单的存储接口通常就要花费大量的时间。

在Speedster7t架构中,将嵌入式PCIe Gen5接口连接到已连接的GDDR6或DDR4存储器这项工作,可由外围NoC自动处理,不需要设计人员编写任何RTL来建立这些连接。由于NoC连接到所有的外围IP接口,因此设计人员在将PCIe连接到GDDR6或DDR4的任何一个存储器接口时,都具有极大的灵活性。在下面的示例中,NoC能够提供足够的带宽,以持续支持PCIe Gen 5通信流连接到GDDR6内存的任意两个通道。这种高带宽连接无需消耗任何FPGA逻辑阵列资源即可实现,并且设计所需时间几乎为零。用户只需要启用PCIe和GDDR6接口即可在NoC上发送事务。

在独立的FPGA逻辑阵列模块上实现安全的局部重新配置

与其他基于静态随机存取存储器(SRAM)的FPGA一样,Speedster7t FPGA必须在通电时进行配置。Speedster7t FPGA具有一个片上FPGA配置单元(FCU),用于管理FPGA的初始配置和任何后续的局部重新配置。FCU还被连接到NoC,从而在配置FPGA时提供了更高的灵活性。使用NoC将配置位流传输到Speedster7t FCU,可以使用以前不可用的新方法来对FPGA进行配置。

在器件配置之前,Speedster7t NoC可用于某些读/写事务:PCIe至GDDR6、PCIe至DDR4、最后是PCIe至FCU。一旦PCIe接口被设置好,FPGA就可以通过PCIe接口接收配置比特流(bitstream),并将其发送给FCU以配置器件的其余部分。一旦到达FCU,配置比特流被写入FPGA可编程逻辑以配置器件。在器件被配置完成后,设计人员可以灵活地重新配置FPGA的某些部分(局部重新配置),以增加新的功能或提高加速性能,而无需关闭FPGA。

新的局部重新配置比特流可以通过PCIe接口发送到FCU,来重新配置器件的任何部分。当部分器件被重新配置时,通过在所需的区域中实例化一个NAP与NoC进行通信,任何进出新配置区域的数据都可以在Speedster7t1500器件中被轻松访问。NoC消除了传统FPGA局部重新配置的复杂性,因为用户不必担心围绕现有逻辑功能进行布线并影响性能,也不必担心由于该区域中的现有逻辑而无法访问某些器件的引脚。该功能节省了设计人员的时间,并在使用局部重新配置时提供了更大的灵活性。

此外,局部重新配置允许设计人员在工作负载变化时调整器件内的逻辑。例如,如果FPGA正在对输入的数据执行压缩算法,并且不再需要压缩,则主机CPU可以告诉FPGA重新配置,并加载经过优化的新设计以处理下一个工作负载。在器件仍处于运行状态时,局部重新配置可以在逻辑阵列集群(cluster)级别上独立完成。一个聪明的用例是开发一个具有自我感知的FPGA,该FPGA通过使用一个软CPU来监测器件操作以实时启动局部重新配置,来关闭逻辑从而节省功耗,或在FPGA架构中添加更多加速器模块,以临时处理大量的输入数据。这些功能为设计人员提供了前所未有的配置灵活性。

图4:使用Speedster7t NoC实现硬件虚拟化

加载中...