Xilinx FPGA AI开发工具 AIE(13)—标量/向量处理单元-Xilinx-AMD社区-FPGA CPLD-ChipDebug

Xilinx FPGA AI开发工具 AIE(13)—标量/向量处理单元

AI Engine包含一个标量处理单元和一个向量处理单元。其中标量处理单元用于程序控制(分支,比较)、标量数学运算、非线性函数和数据类型转换。这一点和传统的通用处理器类似。如下图所示。

 

图片[1]-Xilinx FPGA AI开发工具 AIE(13)—标量/向量处理单元-Xilinx-AMD社区-FPGA CPLD-ChipDebug
图中的Register Files用于存储输入/输出数据。非线性函数包括定点非线性函数和浮点非线性函数。其中定点非线性函数可支持正余弦、绝对值、前导零、比较、开方、倒数和开方取倒数。浮点非线性函数可支持开方、开方取倒数、倒数、绝对值和比较运算。算术逻辑单元(ALU)可支持32位整数加/减法(Latency1)、32位整数按位逻辑运算(位与、位或、位异或,Latency1)、32位整数乘法(结果仍截取为32位,存储在R寄存器中,Latency3)、移位运算(左移、右移,Latency1)。对标量处理器编程时,可采用标准的C数据类型,如下表所示。除floatdouble外,其余数据类型前可加signedunsigned以表明数据是有符号数还是无符号数。同时,仅支持单精度浮点不支持双精度浮点。
 
需要注意的是程序分支如if语句的分支仍然是受标量处理器控制的,即使其用于处理向量指令。
 
图片[2]-Xilinx FPGA AI开发工具 AIE(13)—标量/向量处理单元-Xilinx-AMD社区-FPGA CPLD-ChipDebug
向量处理器包含一个定点单元(1288位定点乘法器)和一个浮点单元(8个单精度浮点器)。其处理性能如下表所示。表中X操作数为1024位,Z操作数为256位。从乘法器角度而言,其操作数正是来源于这1024/256位寄存器,但有些操作数是共享的,这意味着有些寄存器的值会被广播到多个乘法器上。
 
图片[3]-Xilinx FPGA AI开发工具 AIE(13)—标量/向量处理单元-Xilinx-AMD社区-FPGA CPLD-ChipDebug
定点向量单元如下图所示。图中PRA为预加器、MPY为乘法器、PSA为第一级加法树,PSB为第二级加法树,ACC为累加器。
 
图片[4]-Xilinx FPGA AI开发工具 AIE(13)—标量/向量处理单元-Xilinx-AMD社区-FPGA CPLD-ChipDebug

浮点向量单元如下图所示,由8个浮点乘加器构成。该单元复用Register Files和定点向量单元的数据路径,这意味着一个向量指令在一个时钟周期只可以做浮点或定点中的一种运算。图中的FPSGN可用于对每个通道的数据取反。

 

图片[5]-Xilinx FPGA AI开发工具 AIE(13)—标量/向量处理单元-Xilinx-AMD社区-FPGA CPLD-ChipDebug

此外,无论是定点向量单元还是浮点向量单元都支持向量的比较、选大或选小。

请登录后发表评论

    没有回复内容