AIE(12)—AI Engine架构概览-Xilinx-AMD社区-FPGA CPLD-ChipDebug

AIE(12)—AI Engine架构概览

AI Engine阵列是由一系列的AI EngineTile构成。每个AI Engine Tile包含一个AI Engine,一个存储单元和一个互连单元,如下图所示。可以看到相邻两行AI Engine Tile的存储单元与AI Engine的位置正好相反。
 
图片[1]-AIE(12)—AI Engine架构概览-Xilinx-AMD社区-FPGA CPLD-ChipDebug

存储单元可被东西南北四个方向的AI Engine共享,当然这也跟AI Engine的位置有关。例如图中红色AI Engine可访问与之相邻的4个存储单元(黄色标记)。最右侧的橙色AI Engine就只能访问三个存储单元,因为其位于边界。每个方向的存储单元都有对应的存储器接口,AI Engine在访问相应方向的存储单元时正是通过这些接口实现的。每次访问的最大位宽为256

 

水平方向相邻的两个AI Engine之间还有级联端口,用于传送累加器的结果。仍以上图为例,最下方的一行AI Engine可从左至右级联,倒数第二行的AI Engine可从右至左级联。同时,最下方级联至最右侧时可与倒数第二行最右侧的AI Engine级联,形成蛇形级联。

 

互连单元采用AIX4 Stream接口将数据在东西南北四个方向传送。同时每个AI Engine Tile的存储单元都包含一个DMA。每个DMA由一个独立的S2MM和一个独立的MM2S构成。前者用于将数据从Stream上取下来写入到存储单元,后者用于将存储单元的数据上传到Stream,如下图所示。

 

图片[2]-AIE(12)—AI Engine架构概览-Xilinx-AMD社区-FPGA CPLD-ChipDebug
再看AI Engine自身,如下图所示。每个AIEngine包含一个程序存储单元,大小为16KB,有2Stream输入接口和2Stream输出接口,均为32位。因此,每个时钟周期可从一个Stream上获取一个32位数据或每4个时钟周期可从一个Stream上获取一个128位数据。每个AI Engine还有4个存储单元访问接口,但每个时钟周期只可以有两次读操作和一次写操作。
 
图片[3]-AIE(12)—AI Engine架构概览-Xilinx-AMD社区-FPGA CPLD-ChipDebug

至此,我们可以看到AI Engine有三种数据源:存储单元、AXI4-Stream和级联接口。因此,编程时需要充分了解AIE的数据访问能力:232AXI4-Stream输入,232AXI4-Stream输出,1384位级联Stream输入,1384位级联Stream输出,2256位读操作和1256位写操作。

 

AI Engine本身是一个高度优化的SIMDSingle Instruction Multiple Data& VLIWVery Long Instruction Word)处理器,包含1个标量处理单元,1个向量处理单元,2个读地址发生器,1个写地址发生器,1个取指和译码单元,如下图所示。正因为有2个读地址发送器和1个写地址发生器,所以每次访问可实现2256读操作和1256写操作。

 

图片[4]-AIE(12)—AI Engine架构概览-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

请登录后发表评论

    没有回复内容