AI 引擎存储器 - 2023.2 简体中文

AI 引擎内核与计算图编程指南 (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 简体中文

每个 AI 引擎都有 16 KB 的程序存储器,允许存储 1024 条 128 位指令。AI 引擎指令位宽为 128 位(最大值),支持多指令格式和可变长度指令,以减小程序存储器大小。位于经最优化的内层循环之外的众多指令均可使用更短的格式。

每个 AI 引擎拼块 (tile) 都有 8 个数据存储体,其中每个存储体(单个 bank)均为一个 256 码字 x 128 位的单端口存储器(总计 32 KB)。每个 AI 引擎均可访问来自相邻 3 个拼块的存储器及其自身的数据存储器,总计可访问 128 kB 的存储器。栈是数据存储器的子集。栈大小和堆大小的默认值为 1 KB。如果最优化级别大于 0(对于 aiecompilerxlopt>=1),那么堆大小可由编译器自动进行计算和调整。栈大小和堆大小可使用源代码中的编译器选项或者约束来更改。如需了解有关栈和堆大小用法的更多信息,请参阅 AI 引擎工具和流程用户指南 (UG1076)

按逻辑表示法,128 KB 存储器可视作为单个连续 128 KB 块或 4 个 32 KB 块,每个块均可拆分为 4 个奇数 bank 或偶数 bank。通过将一个偶数 bank 和一个奇数 bank 交织即可构成一个双 bank。位于 AI 引擎阵列边缘的 AI 引擎可能所含相邻 bank 较少,相应的可用存储器也较少。

每个存储器端口均以 256 位/128 位矢量寄存器模式运行或者以 32 位/16 位/8 位标量寄存器模式来运行。256 位端口是由奇偶配对的存储体创建的。8 位和 16 位存储是作为读取 - 修改 - 写入指令来实现的。如果每个端口都访问不同 bank,那么支持全部 3 个端口并发操作。

存储器中存储的数据采用小字节序格式。

每个 AI 引擎都有一个 DMA 控制器,此控制器拆分为 2 个独立模块,S2MM 用于将串流数据存储到存储器(32 位数据),MM2S 则将存储器内容写入串流(32 位数据)。S2MM 和 MM2S 都有两条独立的数据通道。