一个运用NoC来优化加解密设计的例子
Achronix 最新基于台积电(TSMC)的7nm FinFET工艺的Speedster7t FPGA器件包含了革命性的新型二维片上网络(2D NoC)。2D NoC如同在FPGA可编程逻辑结构上运行的高速公路网络一样,为FPGA外部高速接口和内部可编程逻辑的数据传输提供了超高带宽(~27Tbps)。
图1 Speedster 7t FPGA结构图
NoC使用一系列高速的行和列网络通路在整个FPGA内部分发数据,从而在整个FPGA结构中以水平和垂直方式分发数据流量。NoC中的每一行或每一列都有两个256位的、单向的、行业标准的AXI通道,可以在每个方向上以512Gbps(256bit x 2GHz)的传输速率运行。
NoC为FPGA设计提供了几项重要优势,包括:
- 提高设计的性能。
- 减少逻辑资源闲置,在高资源占用设计中降低布局布线拥塞的风险。
- 减小功耗。
- 简化逻辑设计,由NoC去替代传统的逻辑去做高速接口和总线管理。
- 实现真正的模块化设计。
本文用一个具体的FPGA设计例子来展现NoC在FPGA内部逻辑互连中发挥的重要作用。本设计主要是实现三重数据加密解密算法(3DES)。该算法是DES加密算法的一种模式,它是对于每个数据块应用三次DES加密算法,通过增加DES的密钥长度增加安全性。
在该FPGA设计中,我们将输入输出管脚放在的FPGA上下左右四个方向上。上面管脚进来的数据经过逻辑1进行解密然后通过蓝色的走线送到逻辑2加密以后从下面的管脚送出。左边管脚进来的数据经过逻辑3进行解密然后通过红色的走线送到逻辑4加密以后从右边的管脚送出。如图2 所示。
图2 3DES设计(没有用NoC)后端布局布线图
本设计遇到的问题如下:
- 加密和解密模块中间的连线延时太长,如果不增加流水寄存器(pipeline),设计性能会收到很大限制。但是由于连接总线位宽是256位,增加几级流水寄存器又会占用很多额外的寄存器资源。
- 上下模块之间的连接总线和左右模块之间的连接总线出现了交叉,如果设计再复杂一点有可能会遇到布局布线局部拥塞,会大大增加工具布局布线时间。
上面两个问题也是广大FPGA设计者在复杂FPGA设计中或多或少会遇到的问题,导致的原因有可能是设计比较复杂,也有可能是硬件平台的限制,或者设计必须连接不同位置的外围Hard IP导致。
NoC的出现让我们上面遇到的问题迎刃而解。NoC为FPGA逻辑内部互连提供了双向288bit的原始数据模式(Raw data mode)。 用户可以通过这288bit的信号进行逻辑直连或者自定义协议互连。
图3 利用2D NoC进行内部逻辑互连
在NoC的每个交叉点上都有两个网络接入点(NAP),用户只要简单地通过例化NAP的原语或者宏定义就可以将自己的逻辑接入到NoC并进行互连。
图4 网络接入点NAP
图5 例化NAP宏定义示例
这样通过在3DES加密和解密模块上分别例化NAP,就可以实现3DES加密和解密模块之间的NoC互连。
图6 3DES设计(利用NoC)后端布局布线图
这样在简化用户设计的同时,设计性能有了很大的提高,从之前的260MHz提高到了750MHz。 图6中可以看到之前逻辑之间大量的连接总线已经看不到,总线的连接都由NoC接管,在后端布局布线图中只能看到绿色时钟走线和白色模块内部的逻辑走线。
本文主要想通过这样一个例子给广大FPGA设计者展示如何利用NoC来进行FPGA内部逻辑的互连,从而给广大FPGA设计者提供另一种考虑问题的思路。在传统的FPGA设计中出现了性能无法提升,布局布线拥塞的时候,是否可以考虑利用Achronix新一代的Speedster7t FPGA来简化和加速用户的设计。