直接射频采样简化了模拟系统,但同时也提高了对数字系统的要求。需要数字系统有足够强的处理能力,这体现在高密度的计算能力和高速的数据传输能力。一个典型的案例是5G无线通信,其计算密度是4G的5到10倍。5G在很多应用中扮演着重要的角色,如自动驾驶(Autonomous Vehicles)和虚拟现实(Virtual Reality),可满足这些应用对高速处理和低延迟的需求。另一个计算密度极高的场合是机器学习,如DNN/CNN等网络,显著增强了计算密度。在这种背景下,Xilinx推出了AI Engine(Adaptable Intelligent),将其集成在新一代产品ACAP中。AI Engine与Scalar Engine(ARM Core)、Adaptable Engine(传统的Programmable Logic)共同构成了多元化的异构计算平台,从而满足不同应用场合的需求,如下图所示(图片来源:Figure 2, wp506, Xilinx)。
AIEngine基本结构
AI Engine的两个基本特征: VLIW(Very Long Instruction Word,超长指令字)和SIMD(Single Instruction Multiple Data,单指令多数据流)。前者是一种非常长的指令组合,它把许多条指令连在一起,增加了运算的速度,从而实现了指令级并行;后者能够复制多个操作数,并把它们打包在大位宽的寄存器中,从而实现了数据级并行。AI Engine在芯片中以阵列形式存在,如下图所示(图片来源:Figure 3, wp506, Xilinx)。
单独每个AI Engine的具体结构,如下图所示(图片来源:Figure 4, wp506, Xilinx)。可以看到一个AI Engine拥有32KB数据存储空间(Data Memory)、16KB程序存储空间(Program Memory)、512bit的向量计算单元、32b标量RISC处理器等。此外,一个AI Engine可以访问与其邻近的北方、南方和西方AI Engine的数据存储空间,这使得当整个处理链路在处理数据时,中间结果可以由一个AI Engine快速便捷地搬移到另一个AI Engine。距离较远的AI Engine则可通过AXI-Streaming接口实现互连。
此外,AXI-Streaming接口还可实现AI Engine与PL以及NOC的互连,如下图所示(图片来源:Figure 7, wp506, Xilinx)。这样,可以很容易将AI Engine和Adaptable Engine组合起来,增强了计算平台的灵活性,以满足不同需求。
AI Engine的优势
先看看AI Engine的性能,如下图所示(图片来源:Table 1, wp506, Xilinx),可以看到,对于8bit有符号整型数据,一个AI Engine可以同时实现128个8bitx8bit的乘加运算,而这只需要一个时钟周期,且时钟频率为1GHz。由此可见AI Engine的强大的数据处理能力,这源于其自身的高度并行性。
AI Engine自身结构的并行性需要算法本身的支持。换言之,如果算法很容易通过向量计算方式实现,那么采用AI Engine是非常合适的,和PL相比,在性能和功耗上都会有优势。但如果算法很难采用向量方式实现,而采用标量更合适,那么PL则是更好的选择。由此可见,两者都有自身的应用场合。这也是为什么ACAP要将两者集成在单个芯片中。
AIEngine开发环境
AI Engine的开发需要采用C/C++语言,支持基于x86仿真环境的功能仿真和周期精确的仿真。系统级仿真则需要用到System C虚拟平台。此外,Xilinx还提高了AI Engine库,以支持数字信号处理、无线通信、机器学习、矩阵计算等。这些被优化的库可以有效缩短开发周期、提升开发效率并发挥AI Engine的潜能。
参考文献:Xilinx, WP506 (v1.0.2) October 3, 2018