玄铁 M 拓展
简单看看玄铁 m 拓展文档。
硬件提供参数
ELEN,TLEN,TRLEN 都是硬件设计者提供的。ELEN 指定了累加出来的单个元素的长度,TLEN 指定了 TILE 寄存器的大小。TRLEN 指定了 TILE 寄存器的行大小。剩下的 ROWNUM, ARLEN, ALEN 都可以根据上面的参数算出来。
寄存器的数量是 tile 4 个,累加寄存器 4 个。用户能够配置的是 mnk,分别指定用于计算的三个矩阵的参数,三个矩阵的源数据和目的数据类型是由计算指令决定的。
配置指令
就是配置 mnk 的指令和 mrelease 指令。
矩阵乘
多样化的矩阵乘,支持宽度变宽。
load store
支持不同宽度的 load store。a b c 类型,分别代表按照怎么样的尺寸加载和乘。
其他
数据移动指令,可以在 tile 和累加寄存器之间进行矩阵数据的移动。这里的移动应该是整个矩阵的移动。
数据广播,单个元素广播到整个矩阵。
数据打包,两个寄存器合成一个。
数据 slide,相当于移一部分到另一个寄存器。
数据宽度变化指令
提供了一系列的计算指令能够在计算的时候变化宽度。
还有矩阵级别的数据类型转换指令,这里只是进行数据转换,而不是进行量化。