接口基本信息
实现2D格式的数据搬运,即从L1/GM加载以512Bytes为基本单元的分形矩阵到L0A/L0B缓冲区。
数据对齐要求:
- L0A/L0B中地址:512Bytes对齐
- GM地址:1Byte对齐
- L1地址:32Bytes对齐
参数名 |
说明 |
取值范围 |
单位 |
|---|---|---|---|
dst |
目的地址。 |
/ |
/ |
src |
源地址。 |
/ |
/ |
baseIdx |
表示src matrix的fractal matrix的index ID。例如,src matrix共计有500个16*16的fractal matrix,那baseIdx=300含义是读取第301个16*16的fractal matrix写入L0A/L0B上。 |
[0, 2^16-1] |
fractal分形 |
repeat |
表示重复搬运的次数,每次迭代搬运的fractal matrix idx = baseIdx + srcStride * repeatIdx, 目的地址dst_addr = dst + (dstGap + 1) * repeatIdx * 512Bytes 。如果只想执行1次,则设为1,如果设为0,则不执行。 |
[0, 2^8-1] |
次 |
srcStride |
每个repeat迭代的源地址stride,单位是16*16的fractal matrix,每个repeat迭代的源地址分形头到第二个分形头的距离。如果srcStride为1,表示在src addr连续读取。 |
[0, 2^16-1] |
分形 |
dstGap |
每个repeat迭代的目的地址gap,单位是16*16的fractal matrix,每个repeat迭代的目的地址分形尾到第二个分形头的距离。如果dstGap为0,表示在dst addr连续存储。 |
[0, 2^16-1] |
分形 |
sid |
预留参数,设置为0即可。 |
[0,10] |
/ |
transpose |
该参数仅在src={L1}, dst={L0A, L0B},且分形的数据类型为b16时可以设为true。 如设为true,则当从源地址中读取分形矩阵时,在写入L0A或L0B缓冲区之前进行单个分形矩阵转置操作。 如设为false,则数据类型为b4、b8、b16、b32均可,且不进行分形矩阵的转置。 注:如果数据类型为b4、b8、b32需要转置,请参考具备转置的矩阵输入搬运。 |
[0, 1] |
/ |
addr_cal_mode |
枚举类型addr_cal_mode_t定义: typedef enum {
inc = 0,
dec = 1,
} addr_cal_mode_t;
|
[0,1] |
/ |
repeat=0表示不执行,此接口将被视为NOP并报警告。
每次迭代中的baseIdx不能小于零,否则会引发异常。