存储器通过独立的接口和逻辑验证加快设计速度

可编程逻辑

1339人已加入

描述

自从几十年前首次推出 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 和可编程逻辑阵列之间的源或目的地。

接口

图 1:Speedster7t 的片上网络(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,并且可以在彼此之间发送数据流。

接口

图 2:NoC 上跨越器件逻辑阵列的数据流

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

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

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

接口

图 3:将 PCIe 直接连接到 GDDR6 接口

在独立的 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 架构中添加更多加速器模块,以临时处理大量的输入数据。这些功能为设计人员提供了前所未有的配置灵活性。

轻松支持硬件虚拟化

Speedster7t NoC 通过利用 NAP 及其 AXI 接口,为设计人员提供了在单个 FPGA 中创建虚拟化安全硬件的独特能力。将可编程逻辑设计直接连接到 NoC 只需要在逻辑设计中实例化一个 NAP 及其 AXI4 接口即可。每个 NAP 还具有一个相关的地址转换表(ATT),该表将 NAP 上的逻辑地址转换为 NoC 上的物理地址。NAP 的 ATT 允许可编程逻辑模块使用本地地址,同时将 NoC 定向事务映射到 NoC 全局存储映射所分配的地址。此项重新映射功能可以以多种方式使用。例如,它可以用于允许加速引擎的所有相同副本使用基于零的虚拟寻址,同时将数据流量从每个加速引擎发送到不同的物理存储位置。

每个 ATT 条目还包含一个访问保护位,以防止该节点访问被禁止的地址范围。该功能提供了一种重要的进程间安全机制,可防止同时在一个 Speedster7t FPGA 上运行的多个应用或多个任务干扰分配给其他应用或任务的存储模块。这种安全机制还有助于防止由于意外、偶然甚至是故意的存储地址冲突而导致系统崩溃。此外,设计人员可以使用此方案阻止逻辑功能访问整个存储设备。

接口

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

Memory Space:存储空间

简化团队协同设计

基于团队的协同化 FPGA 设计并不是一个新的概念,但是底层架构和布线依赖于 FPGA 的其他部分,从而使得实现这个简单概念非常具有挑战性。一旦一个团队完成了设计的一部分,另一个设计其他部分的团队在尝试访问设备另一端的资源时,通常会遇到挑战,因为需要在已经完成的设计部分进行布线。同样,对一部分已进行设计布线的 FPGA 的区域或大小进行更改,可能会对所有其他 FPGA 设计模块产生连锁影响。

使用 Speedster7t NoC,可以将设计模块映射到 FPGA 的任何部分,并且可以对资源分配进行更改,而不会影响其他 FPGA 模块的时序、布局或布线。由于器件中所有的 NAP 都支持每个设计模块无限制地访问 NoC 进行通信,因此使得基于团队的设计成为可能。因此,如果一个设计的某个部分在规模上有所增大,只要有足够的 FPGA 资源可用,数据流就会由 NoC 自动管理,从而使设计人员不必担心是否满足时序,以及对其他团队成员正在进行的设计的其他部分可能带来的后续影响。

接口

图 5:致力于开发同一个 FPGA 的多个设计团队

Design Team:设计团队

通过独立的接口和逻辑验证加快设计速度

Speedster7t NoC 的另一个独特功能是支持设计人员独立于用户逻辑去配置和验证 I/O 连接。例如,一个设计团队可以验证 PCIe 至 GDDR6 的接口,而另一个设计团队可以独立地验证内部逻辑功能。这种独立操作之所以能够实现,是因为 NoC 的外围部分连接了 PCIe、GDDR6、DDR4 和 FCU,而不会消耗任何 FPGA 资源。这些连接可以在不使用任何 HDL 代码的情况下进行测试,从而可以同时独立地验证接口和逻辑。该功能消除了验证步骤之间的依赖关系,并实现了比传统 FPGA 架构更快的总体验证速度。

接口

图 6:独立的 I/O 和逻辑验证

Design Team 1: I/O Verification:设计团队 1:I/O 验证

Design Team 2: Logic Verification:设计团队 2:逻辑验证

采用分组模式(Packet Mode)简化 400 Gbps 以太网应用

在 FPGA 中实现高速 400 Gbps 以太网数据通路所面临的挑战是找到一种能够满足 FPGA 性能要求的总线位宽。对于 400G 以太网,全带宽运行的唯一可行选择是运行在 724 MHz 的 1,024 位总线,或运行在 642 MHz 的 2,048 位总线。如此宽的总线难以布线,因为它们在 FPGA 架构内消耗了大量的逻辑资源,即使在最先进的 FPGA 中也会在这样的速率要求下产生时序收敛挑战。

但是,在 Speedster7t 架构中,设计人员可以使用一种称为分组模式(packet mode)的新型处理模式,其中传入的以太网流被重新排列为四个较窄的 32 字节数据包,或者四条独立的以 506 MHz 频率运行的 256 位总线。这种模式的优点包括:当数据包结束时减少了字节的浪费,并且可以并行传输数据,而不必等到第一个数据包完成后才开始第二个数据包的传输。Speedster7t FPGA 架构的设计旨在通过将以太网 MAC 直接连接到特定的 NoC 列,然后使用用户实例化的 NAP 从 NoC 列连接到逻辑阵列中,从而启用分组模式。使用 NoC 列,数据可以沿着该列被发送到 FPGA 架构中的任何位置,以便进一步处理。使用 ACE 设计工具配置分组模式,可大大简化用户设计,并在处理 400 Gbps 以太网数据流时提高了效率。

接口

图 7:分组模式下的数据总线重排

Packet:数据包

Byte:字节

接口

图 8:使用分组模式的 400 Gbps 以太网

降低逻辑占用并提高整体 FPGA 性能

与以前的传统 FPGA 相比,Speedster7t NoC 具有更大的灵活性和更简单的设计方法。一个潜在的好处是 NoC 会自动减少给定设计所需的逻辑量,设计可以使用 NoC 代替 FPGA 逻辑阵列来进行模块间布线。ACE 设计工具自动管理将设计单元连接到 Speedster7t NoC 的复杂性,因此设计人员无需编写 HDL 代码即可实现生产率。这种方法简化了实现时序收敛的耗时挑战,同时又不会由于 FPGA 逻辑阵列内的布线拥塞而降低整体应用性能。NoC 还可以在不牺牲 FPGA 性能的情况下提高器件利用率,并且可以显着增加可用于计算的查找表(LUT)数量。

为了强调这一优势,我们创建了一个支持二维输入图像卷积的示例设计。每个模块都使用 Speedster7t 机器学习处理器(MLP)和 BRAM 模块,每个 MLP 在一个周期内执行 12 次 int8 乘法。将 40 个二维卷积模块链接在一起,以利用器件中几乎所有可用的 BRAM 和 MLP 资源。总共有 40 个二维卷积示例设计实例并行运行,使用了 94%的 MLP、97%的 BRAM、但仅使用了 8%的 LUT。在总的可用 LUT 中,其余 92%的 LUT 仍可被用于其他功能。

随着更多的实例被内置于器件中,单个单元模块的最高频率(FMAX)不会降低。该设计能够保持性能,因为进出每个二维卷积模块的数据可以直接从连接到 NoC 的 NAP 访问 GDDR6 内存,而无需通过 FPGA 逻辑阵列进行布线。

接口

图 9:一个带有 40 个二维卷积模块实例的 Speedster7t 器件

结论

Speedster7t NoC 实现了 FPGA 设计过程的根本转变。Achronix 是第一家实现二维片上网络(2D NoC)的 FPGA 公司,该 2D NoC 可以连接所有的系统接口和 FPGA 逻辑阵列。这种新型架构使 Achronix 公司的 FPGA 特别适用于高带宽应用,同时显著提高了设计人员的生产率。由于 NoC 管理了 FPGA 中设计的数据加速器和高速数据接口之间的所有网络功能,因此设计人员只需要设计其数据加速器并将其连接到 NAP 原语即可。ACE 和 NoC 负责其他所有事务。通过使用 NoC,FPGA 设计人员将受益于:

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

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

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

轻松支持硬件虚拟化

简化团队化设计

通过独立的接口和逻辑验证加快设计速度

采用分组模式简化 400 Gbps 以太网应用

降低逻辑占用并提高整体 FPGA 性能
       责任编辑:pj

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分