支持的指令桩

以下是 mssanitizer工具支持的检测指令列表。对于内存检测和竞争检测功能而言,检测工具要注意指令对内存的操作方式和内容,此表格便以指令对内存的操作方式而进行分类介绍。

表1 指令列表

指令类型

说明

指令名称

搬运类指令

dma move类指令

  • 此类指令表示通过数据搬运单元进行整块搬运。
  • 涉及从源地址的读操作和对目的地址的写操作。

copy_ubuf_to_gm

copy_gm_to_ubuf

copy_ubuf_to_ubuf

move align类指令

  • 此类指令表示通过数据搬运单元进行整块搬运,在搬运过程中会对数据做一些对齐处理。
  • 涉及从源地址的读操作和对目的地址的写操作。

copy_gm_to_ubuf_align_b8

copy_gm_to_ubuf_align_b16

copy_gm_to_ubuf_align_b32

copy_ubuf_to_gm_align_b8

copy_ubuf_to_gm_align_b16

copy_ubuf_to_gm_align_b32

vector_dup 指令

仅涉及对目的地址的写操作。

vector_dup

load/store

通过标量的方式对GM或local memory读取或写入。

load

store

load_2d

  • 此类指令以分形矩阵为基本单元进行数据搬运。
  • 涉及从源地址的读操作和对目的地址的写操作。

load_gm_to_cbuf

load_gm_to_ca

load_gm_to_cb

load_cbuf_to_ca

load_cbuf_to_cb

计算类指令

单目计算指令

  • 从源地址读取n个数据,经过一定运算得到新的n个数据,并写入到目的地址。
  • 此类指令涉及从一个源地址中读取数据,并向目的地址中写入数据。

vabs

vadds

vaxpy

vbitsort

vbrcb

vcmpvs

vconv

vcopy

vector_dup

vexp

vgather

vgatherb

vld_va_reg

vln

vlrelu

vmaxs

vmins

vmuls

vnot

vrec

vrelu

vrsqrt

vshl

vshr

vsqrt

vtranspose

双目计算指令

  • 从两个源地址分别读取n个数据,经过一定运算得到新的n个数据,并写入到目的地址。
  • 此类指令涉及从两个源地址中读取数据,并向目的地址中写入数据。

vadd

vaddrelu

vaddreluconv

vand

vbitsort

vcmp

vcmpv

vdiv

vmadd

vmaddrelu

vmax

vmin

vmla

vmrgsort4

vmul

vmulconv

vor

vreduce

vreducev2

vsel

vsub

vsubrelu

vsubreluconv

规约类计算指令

  • 从源地址读取n个数据,经过一定运算得到新的m个数据,并写入到目的地址。此类指令运算过程中可能出现多个数据得到一个数据的情况,因此源地址的数据量与目的地址的数据量可能会不同。
  • 此类指令涉及从一个源地址中读取数据,并向目的地址中写入数据。

vcadd

vcgadd

vcgmax

vcgmin

vcmax

vcmin

vcpadd

Cube类矩阵乘计算指令

此类指令从源地址读取两个矩阵数据,经过矩阵乘运算得到新的矩阵数据,并写入到目的地址。读取和写入数据时以分形矩阵为基本单元。

mad

同步类指令

同步类指令

在 AiCore 中,会有多条流水线并行处理不同的任务的情况,如搬运流水、向量运算流水、矩阵运算流水等。当不同流水需要访问同一片内存时,就需要保证访问顺序的正确性,此类指令的功能就是控制各流水之间的同步关系。

set_flag

wait_flag

hset_flag

hwait_flag

pipe_barrier