支持的指令桩

以下是 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

计算类指令

单目计算指令

  • 从源地址读取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

同步类指令

同步类指令

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

set_flag

wait_flag

hset_flag

hwait_flag

pipe_barrier